2017-04-12 30 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"); 
    } 
} 

メインクラス@WebServletテストができなかった理由:MockMvcは春ブートに

@SpringBootApplication 
@ServletComponentScan 
public class Demo20Application { 

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

テストコード:

@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 

サーブレットを送る200ステータスコードが、テスト結果は私に示しにステータスは404

MockMvcは、春の起動時にサーブレットをテストするために使用できないようです

答えて

1

MockMvcは、試験に使用される。コントローラ(すなわち、あなたがでいくつかの方法を持っている@Controllerを定義するコンポーネント)。 MockMvcを使用すると、サーブレットコンテナを起動せずにサーブレットコンテキストをモックすることなくWebレイヤーをテストできます。

生のサーブレットは、この環境の外部に完全に作成しています。したがって、これはサポートされていません。

関連する問題