junit을 사용하여 응용 프로그램을 테스트하려고합니다. 내 디스패처 서블릿 내 컨트롤러의 어떤 요청을 보낼 수없는 것 같다,Spring 3.0 junit 테스트 DispatcherServlet
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "/META-INF/spring/applicationContext-test.xml")
@TransactionConfiguration
@Transactional
public class DispatcherServletTest extends AbstractJUnit4SpringContextTests {
private MockHttpServletRequest request;
private MockHttpServletResponse response;
private DispatcherServlet dispatcher;
@Before
public void setUp() throws Exception {
request = new MockHttpServletRequest();
response = new MockHttpServletResponse();
MockServletConfig config = new MockServletConfig("myapp");
config.addInitParameter("contextConfigLocation","classpath*:webmvc-config.xml");
dispatcher = new DispatcherServlet();
dispatcher.init(config);
}
//test cases
}
그래서 문제가 :
그러므로 나는 설정을 다음 클래스를했습니다.
컨텍스트에 contextConfigurationLocation이 있다고 생각합니다. 그가 파일을 (그렇지 않으면 예외를 슬로우) 찾을 수처럼 보이지만 모든 구성을로드하지 않습니다
로거는 말한다 :
는org.springframework.web.servlet.PageNotFound -에 매핑을 찾을 수 없음 URI와 HTTP 요청에 대한 [통해 http : // localhost : 8080/MyApp를/ABC]
하지만 무엇이 잘못되었는지 전혀 생각이 없다 ...
내가 어떤 도움을 주셔서 감사합니다 것입니다!
미리 감사드립니다.
정말로 디스패처 서블릿을 테스트하고 싶습니까? 웹 컨트롤러 처리기 메서드 만 "테스트"하지 않으시겠습니까? – Ralph
junit을 사용하여 http 요청을 테스트 할 수 없다고 생각합니다. 오직 서비스. – jaleel
아니요 올바른 컨트롤러 메서드가 호출되면 전체 응용 프로그램의 의미를 실제로 테스트합니다. 예 : 일부 데이터가 포함 된/myposturl에 POST를 보내 백엔드에 보내고이 호출을 담당하는 메소드가있는 올바른 컨트롤러가 "응답 중"인지 확인하려고합니다. 그래서 내가 생각한 것은 컨트롤러가 아닌 디스패처 서블릿에 요청하십시오. 내 컨트롤러에서 방금이 요청을 처리하는 메서드가 있습니다. RequestMapping (메서드 = RequestMethod.POST, headers = "Accept = ...") public ResponseEntity createFromJsonArray (@RequestBody String json) {... –
Alexander