@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");
}
}
主要课程:
@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
servlet发送200状态代码,但测试结果显示状态为404
似乎MockMvc不能用于在spring boot中测试servlet
答案 0 :(得分:1)
MockMvc
用于测试控制器(即您定义@Controller
的组件,其中包含@RequestMapping
的某些方法。 MockMvc允许您在不启动servlet容器的情况下测试Web层,并为您模拟servlet上下文。
您正在完全在此环境之外创建原始servlet。所以,不,这是不受支持的。