代码之家  ›  专栏  ›  技术社区  ›  Sasha Shpota A-Bag

JAX-RS服务的集成测试

  •  6
  • Sasha Shpota A-Bag  · 技术社区  · 7 年前

    我最近实现了简单的JAX-RS REST端点。我想知道有什么透明的集成测试方法吗?

    我在stackowerflow上搜索了一下,发现了以下问题: first , second . 它们有点过时了,我希望已经有了更好的测试方法。这里提出的解决方案并没有解决我的问题,因为它们提供了特定于供应商或一些复杂的第三方方法。

    Q: 测试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");
    }
    
    1 回复  |  直到 7 年前
        1
  •  3
  •   Community CDub    4 年前

    Arquillian和CDI替代方案

    对于Java EE,您可以使用 Arquillian 为测试创建微部署,允许您选择要部署的类。您可以使用 CDI alternatives 为您的服务提供模拟实现。

    要将Maven依赖项添加到Arquillian部署中,请参阅以下内容 answer .

    JAX-RS客户端API和REST Assured

    为了测试REST API本身,您可以依赖 JAX-RS Client API ,在JAX-RS 2.0中介绍。

    如果您喜欢类似Spring提供的fluent API,请选择 REST Assured .

    探索其他方法

    根据您对测试的需求,您还可以探索其他不使用Java的解决方案。

    例如 Postman 允许您编写 test scripts . 它还提供 Newman ,从带有节点的命令行运行集合。js。