Spring @ContextXml에 적합한 위치를 지정하는 방법
우리 프로젝트에서는 컨트롤러가 올바른 모델 뷰를 반환하는지 확인하기 위해 테스트를 작성하고 있습니다.
@Test
public void controllerReturnsModelToOverzichtpage()
{
ModelAndView modelView = new ModelAndView();
KlasoverzichtController controller = new KlasoverzichtController();
modelView = controller.showOverzicht();
assertEquals("Klasoverzichtcontroller returns the wrong view ", modelView.getViewName(), "overzicht");
}
예외 null을 반환합니다.
지금 @context 구성을 구성하고 있지만 src\main\webapp\root\에 있는 올바른 xml을 로드하는 방법을 알 수 없습니다.WEB-INF\root-context.xml
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class TestOverzichtSenario{
....
컨텍스트 주석이 올바른 xml을 로드하는지 확인하는 방법에 대한 제안이 있습니까?
v2 편집
웹에서 구성 .xml 파일을 복사했습니다.INF 폴더 대상
src\main\resources\be\..a bunch of folders..\configuration\*.xml
그리고 webinf의 web.xml을 다음으로 변경했습니다.
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:configuration/root-context.xml
classpath*:configuration/applicationContext-security.xml
</param-value>
그리고 이제 오류를 이해합니다.
org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from ServletContext resource [/WEB-INF/mvc-dispatcher-servlet.xml]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/mvc-dispatcher-servlet.xml]
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:341)
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143)
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:178)
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:149)
org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:124)
org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:93)
org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)
org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:467)
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:397)
org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:442)
org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:458)
org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:339)
org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:306)
org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:127)
javax.servlet.GenericServlet.init(GenericServlet.java:212)
com.springsource.insight.collection.tcserver.request.HttpRequestOperationCollectionValve.invoke(HttpRequestOperationCollectionValve.java:80)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:379)
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
java.lang.Thread.run(Unknown Source)
테스트 결과는 다음과 같습니다(Maven 및 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 ....
}
이러한 이유로 구성을 에 넣지 않습니다.webapp.
제가 아는 한, 파일에 액세스할 수 있는 좋은 방법은 없습니다.webapp장치 테스트의 폴더입니다.구성을 에 넣을 수 있습니다.src/main/resources대신, 웹 앱(사용)뿐만 아니라 장치 테스트(문서에 설명된 대로)에서도 액세스할 수 있습니다.classpath:의 접두사.contextConfigLocation).
참고 항목:
이것은 제가 생각하는 놀라운 특정 문제입니다.메이븐은 파일 양식을 복사하지 않습니다./src/main/resources대상-테스트 폴더로 이동합니다.이 방법을 사용하려면 리소스 플러그인을 구성하여 직접 이 작업을 수행해야 합니다.
더 쉬운 방법은 대신 테스트별 컨텍스트 정의를/src/test/resources디렉터리 및 로드 방법:
@ContextConfiguration(locations = { "classpath:mycontext.xml" })
간단한 해결책은
@ContextConfiguration(locations = { "file:src/main/webapp/WEB-INF/applicationContext.xml" })
춘계 포럼에서.
사용자:
@ContextConfiguration(locations="file:WebContent/WEB-INF/spitterMVC-servlet.xml")
이 프로젝트는 이클립스 동적 웹 프로젝트이며 경로는 다음과 같습니다.
{project name}/WebContent/WEB-INF/spitterMVC-servlet.xml
테스트를 위해 app-context.xml과 독립적인 test-context.xml을 생성한다고 가정하고 /src/test/resources 아래에 test-context.xml을 놓습니다.테스트 클래스에서 클래스 정의 맨 위에 @ContextConfiguration 주석을 배치합니다.
@ContextConfiguration(locations = "/test-context.xml")
public class MyTests {
...
}
파일 로드 위치:{project}/src/main/webapp/WEB-INF/spring-dispatcher-servlet.xml
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "file:src/main/webapp/WEB-INF/spring-dispatcher-servlet.xml" })
@WebAppConfiguration
public class TestClass {
@Test
public void test() {
// test definition here..
}
}
@런 위드(스프링)JUNit4ClassRunner.class)@ContextConfiguration(위치 = {"/Beans.xml")} 공용 클래스 DemoTest{}
일부 정리로 인해 테스트 클래스 폴더에 리소스 파일이 누락되는 등의 간단한 문제가 발생할 수 있습니다.
언급URL : https://stackoverflow.com/questions/4377699/spring-contextconfiguration-how-to-put-the-right-location-for-the-xml
'programing' 카테고리의 다른 글
| 신속하고 돌연변이적인 구조 (0) | 2023.08.23 |
|---|---|
| JQuery 요소가 DOM에 있는지 확인하려면 어떻게 해야 합니까? (0) | 2023.08.23 |
| 명령이 성공적으로 실행되었는지 확인합니다. (0) | 2023.08.23 |
| 팬더와 함께 Excel XML .xls 파일 읽기 (0) | 2023.08.23 |
| 두 타임스탬프 사이에 있는 타임스탬프가 있는 레코드에 대한 oracle sql 쿼리 (0) | 2023.08.23 |