测试 Java Servlet 可以从单元层、集成层、端到端层三个层面来进行。下面按常见做法给你一个清晰指南。
Servlet 本质是一个 Java 类,可以通过 mock 请求/响应对象来测试。
示例:
public class HelloServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
resp.getWriter().write("Hello");
}
}
测试代码:
@Test
void testDoGet() throws Exception {
HelloServlet servlet = new HelloServlet();
HttpServletRequest request = mock(HttpServletRequest.class);
HttpServletResponse response = mock(HttpServletResponse.class);
StringWriter sw = new StringWriter();
when(response.getWriter()).thenReturn(new PrintWriter(sw));
servlet.doGet(request, response);
assertEquals("Hello", sw.toString());
}
✅ 优点:快、简单
❌ 缺点:不验证 web.xml / 注解 / 过滤器
如果你用 Spring Boot:
@WebServlet("/hello")
public class HelloServlet extends HttpServlet { ... }
@SpringBootTest
@AutoConfigureMockMvc
class ServletTest {
@Autowired
MockMvc mockMvc;
@Test
void testHello() throws Exception {
mockMvc.perform(get("/hello"))
.andExpect(status().isOk())
.andExpect(content().string("Hello"));
}
}
适合非 Spring 项目。
// 使用 org.eclipse.jetty
Server server = new Server(8080);
server.start();
// 部署 servlet
// 用 HttpClient 测试
curl http://localhost:8080/hello
适合表单提交、页面跳转。
| 场景 | 工具 |
|---|---|
| 单元测试 | JUnit + Mockito |
| Servlet API mock | Mockito |
| Spring 项目 | MockMvc |
| 容器测试 | Tomcat / Jetty |
| 接口测试 | Postman / RestAssured |
| UI 测试 | Selenium |
@WebServlet 代替 web.xml如果你愿意,可以告诉我:
我可以给你更具体的示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。