Pregunta

Estoy intentando probar mi aplicación con junit.

Por lo tanto, configuré la siguiente clase:

@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

}

Entonces, el problema es que parece que mi servlet de despachador no puede enviar ninguna solicitud a ninguno de mis controladores.

Creo que hay algo con la configuración: contextConfigurationLocation. Parece que puede encontrar el archivo (de lo contrario, generaría una excepción), pero no carga ninguna configuración

El registrador dice:

org.springframework.web.servlet.PageNotFound: no se encontró ninguna asignación para la solicitud HTTP con URI [http:// localhost: 8080 / myapp / abc]

Pero no tengo ni idea de lo que está mal ...

¡Agradecería cualquier ayuda!

Gracias de antemano

¿Fue útil?

Solución

Las minas funcionan bien, pruebe los siguientes ajustes.

  1. si estás usando Junit4, no necesitas extender tu clase de prueba, el corredor de junit debería hacer el truco
  2. Cargue la configuración de contexto a través de classpath y asegúrese de que sea accesible desde la classpath de prueba

    @ContextConfiguration(locations={"classpath:applicationContext-test.xml"})

  3. luego simplemente pruebe los controladores anotados.Lo hago así:

    @Test
    @Transactional
    public void testAnnotatedListUser() throws Exception {
        MockHttpServletRequest request = new MockHttpServletRequest();
        MockHttpServletResponse response = new MockHttpServletResponse();
        AnnotationMethodHandlerAdapter handlerAdpt = new AnnotationMethodHandlerAdapter();
        request.setRequestURI("/you/URIhere");
        ModelAndView mav = handlerAdpt.handle(request, response, this.controller);
        assertEquals("Incorrect view name returned", "myexpectedviewname", mav.getViewName());
    }

Otros consejos

Hay varios problemas en mi pregunta:

Al principio, no es posible extender AbstractJUnit4SpringContextTests y usar @RunWith (...), porque es lo mismo.

En segundo lugar, no debe usar el dispatcherServlert, sino un Handler definiendo el controlador en su application.xml y conectándolo automáticamente en el caso de prueba a través del controlador de Handler privado @Autowire ...

¡Entonces todo debería funcionar bien!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top