Our Tests look like this (using Maven and Spring 3.1):
@ContextConfiguration
(
{
"classpath:beans.xml",
"file:src/main/webapp/WEB-INF/spring/applicationContext.xml",
"file:src/main/webapp/WEB-INF/spring/dispatcher-data-servlet.xml",
"file:src/main/webapp/WEB-INF/spring/dispatcher-servlet.xml"
}
)
@RunWith(SpringJUnit4ClassRunner.class)
public class CCustomerCtrlTest
{
@Resource private ApplicationContext m_oApplicationContext;
@Autowired private RequestMappingHandlerAdapter m_oHandlerAdapter;
@Autowired private RequestMappingHandlerMapping m_oHandlerMapping;
private MockHttpServletRequest m_oRequest;
private MockHttpServletResponse m_oResp;
private CCustomerCtrl m_oCtrl;
// more code ....
}
That's the reason not to put configuration into webapp
.
As far as I know, there are no good ways to access files in webapp
folder from the unit tests. You can put your configuration into src/main/resources
instead, so that you can access it from your unit tests (as described in the docs), as well as from the webapp (using classpath:
prefix in contextConfigLocation
).
See also:
This is a maven specific problem I think. Maven does not copy the files form /src/main/resources
to the target-test folder. You will have to do this yourself by configuring the resources plugin, if you absolutely want to go this way.
An easier way is to instead put a test specific context definition in the /src/test/resources
directory and load via:
@ContextConfiguration(locations = { "classpath:mycontext.xml" })
Simple solution is
@ContextConfiguration(locations = { "file:src/main/webapp/WEB-INF/applicationContext.xml" })
from spring forum
We Use:
@ContextConfiguration(locations="file:WebContent/WEB-INF/spitterMVC-servlet.xml")
the project is a eclipse dynamic web project, then the path is:
{project name}/WebContent/WEB-INF/spitterMVC-servlet.xml
Suppose you are going to create a test-context.xml which is independent from app-context.xml for testing, put test-context.xml under /src/test/resources. In the test class, have the @ContextConfiguration annotation on top of the class definition.
@ContextConfiguration(locations = "/test-context.xml")
public class MyTests {
...
}
Spring document Context management
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With