Sas*_*ota 6 java rest junit jax-rs jakarta-ee
我最近实现了简单的 JAX-RS REST 端点。我想知道是否有任何透明的集成测试方式?
我在 stackowerflow 上搜索了一下,发现了这些问题:first,second。它们有点过时了,我希望已经有一些更好的测试方法。那里提出的解决方案并没有解决我的问题,因为它们提供了特定于供应商的方法或一些复杂的第三方方法。
问:测试 JAX-RS 服务的现代方法是什么?Java EE 是否为此提供了解决方案?或者一般来说,在 Java EE 生态系统中编写控制器测试的最佳方式是什么?
更具体地说,我正在寻找某种可以轻松测试 REST 调用的方法。在 spring 框架中,它通常是这样的:
@Autowired
MockMvc mvc;
@MockBean
MyService service;
@Test
public void shouldGetMyDto() {
MyDto dto = new MyDto("test-id", "test-name");
given(service.getMyDto("test-id")).willReturn(dto);
mvc.perform(get("/api/my-entities/test-id"))
.andExpect(status().isOk())
.andExpect(content().contentType(APPLICATION_JSON_UTF8_VALUE))
.andExpect(jsonPath("$.id", is("test-id")))
.andExpect(jsonPath("$.name", is("test-name")));
verify(service).getMyDto("test-id");
}
Run Code Online (Sandbox Code Playgroud)
对于 Java EE,您可以使用Arquillian为您的测试创建微部署,从而允许您选择要部署的类。您可以使用CDI 替代方案为您的服务提供模拟实现。
要将 Maven 依赖项添加到 Arquillian 部署,请参阅此答案。
为了测试 REST API 本身,您可以依赖JAX-RS 2.0 中引入的JAX-RS 客户端 API。
如果您更喜欢类似于 Spring 提供的流畅 API,请选择REST Assured。
根据您对测试的需求,您还可以探索不使用 Java 的其他解决方案。
例如,Postman允许您编写测试脚本。它还提供Newman来使用 Node.js 从命令行运行集合。
| 归档时间: |
|
| 查看次数: |
4234 次 |
| 最近记录: |