Last friday I spent quite some time to figure out how to initialize my Spring beans when unit-testing some Stripes ActionBeans. There wasn't any Spring context at all and you really need that for integration testing.
How to set up a unit test with Stripes is explained pretty good here. I applied approach 2, run the tests within a mock container. My unit test is extending AbstractTransactionalJUnit4SpringContextTests and is annotated with @RunWith(SpringJUnit4ClassRunner.class) and @ContextConfiguration(locations = { ... }) The code I'm about to show should be put after initialzing the MockServletContext. I recommend using a method annotated with @Before where you do the initialization (I called mine setUpMockServletContext) Since the unit tests run before the Spring config files are put in the WEB-INF directory, you have to tell Stripes where to find the configuration files:
context.addInitParameter("contextConfigLocation",
"classpath:dataSourceContext.xmlnclasspath:daoContext.xmlnclasspath:applicationContext.xml");
Stripes isn't smart enough (yet?) to read the @ContextConfiguration annotation, but this file will probably included somewhere in a parent-unit test, so it isn't a big deal. The final step is telling Spring to initialize its context with your MockServletContext (note that this is a Stripes MockServletContext, not the one used by Spring!):
ContextLoaderListener springContextLoader = new ContextLoaderListener(); springContextLoader.contextInitialized(new ServletContextEvent(context));
That's all there is to it. Let's hope google picks up this blog and other people can handle this tiny problem quicker than I did.
Sources
- Unit testing with Spring
- Unit testing Stripes
- Using Spring with Stripes
- Stripes mailing list
Written by
Jeroen van Wilgenburg
Our Ideas
Explore More Blogs

The Unwritten Playbook: Leading Without a Title
The Unwritten Playbook: Leading Without a Title Leading Without a Title: The Consultant’s Guide to Stealth Influence “Why should we listen...
Jethro Sloan

Test Driven Development (TDD) with dbt: Test First, SQL Later
Test-Driven Development with dbt: Test First, SQL Later If you’ve spent more than three days as an analytics engineer, you’ve probably had...
Dumky de Wilde

