2017-04-12 2 views
1
@WebServlet(urlPatterns = "/test") 
public class TestWebServlet extends HttpServlet{ 

    @Override 
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
     resp.setStatus(200); 
     resp.getWriter().println("test"); 
    } 
} 

Hauptklasse:Warum kann MockMvc nicht testen @WebServlet im Frühjahr-boot

@SpringBootApplication 
@ServletComponentScan 
public class Demo20Application { 

    public static void main(String[] args) { 
     SpringApplication.run(Demo20Application.class, args); 
    } 
} 

Testcode:

@RunWith(SpringRunner.class) 
@SpringBootTest 
@AutoConfigureMockMvc 
public class Demo20ApplicationTests { 

    @Autowired 
    private MockMvc mockMvc; 

    @Test 
    public void testMockMvc() throws Exception { 
     this.mockMvc.perform(post("/test")) 
       .andExpect(status().isOk()); 
    } 

} 



java.lang.AssertionError: Status 
Expected :200 
Actual :404 

das Servlet einen 200-Statuscode aber Prüfergebnis zeigt mir den Status ist 404

Es scheint, dass der MockMvc nicht verwendet werden kann, um Servlets im Springboot

zu testen

Antwort

1

MockMvc wird verwendet, um Controller (d. H. Komponenten, die Sie eine @Controller definieren, die eine Methode mit @RequestMapping auf ihnen hat). MockMvc ermöglicht es Ihnen, Ihre Web-Schicht zu testen, ohne einen Servlet-Container zu starten und den Servlet-Kontext für Sie auszuspielen.

Sie erstellen ein rohes Servlet vollständig außerhalb dieser Umgebung. Also, nein, das wird nicht unterstützt.

Verwandte Themen