java - 在 Java 中测试 REST 服务的最佳方式

标签 java web-services rest

<分区>

  1. 用 Java 测试 REST 服务的最佳方法是什么?开发人员通常采用哪些方法和工具集?

  2. 此外,如果您正在编写调用第三方 REST 服务的休息客户端。测试 REST 客户端的最佳方法是什么。您是否有与第三方 REST 服务通信的 JUnit 测试。您可能会遇到服务不可用的风险/或者如果没有特定凭据则无法访问生产 REST 服务。

最佳答案

我建议您看一下 REST Assured,用于自动测试 REST 服务。以下示例是从它的 web page 复制而来的:

For example if your HTTP server returns the following JSON at “http://localhost:8080/lotto/{id}”:

{
   "lotto":{
      "lottoId":5,
      "winning-numbers":[2,45,34,23,7,5,3],
      "winners":[
         {
            "winnerId":23,
            "numbers":[2,45,34,23,3,5]
         },
         {
            "winnerId":54,
            "numbers":[52,3,12,11,18,22]
         }
      ]
   }
}

You can easily use REST Assured to validate interesting things from response:

@Test public void
lotto_resource_returns_200_with_expected_id_and_winners() {

    when().
            get("/lotto/{id}", 5).
    then().
            statusCode(200).
            body("lotto.lottoId", equalTo(5), 
                 "lotto.winners.winnerId", containsOnly(23, 54));

}

参见 getting startedusage指南以获取更多信息。


如果您使用 Spring Boot 实现了服务器应用程序,您还可以找到关于 Integrating Testing a Spring Boot Application 的博文我几年前写的很有趣。它展示了 Spring Boot 测试支持如何启动嵌入式 Web 服务器并在针对 REST API 执行基于 REST Assured 的测试之前将应用程序部署到该服务器上。换句话说,您既不需要手动启动 Web 服务器,也不需要在测试之间重新部署应用程序。事实上,您甚至不必在代码更改之间创建 .war 或 .jar 文件来验证 REST API 更改。

关于java - 在 Java 中测试 REST 服务的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38382204/

相关文章:

java - DB-sqlite android,不工作

java - 使用 Files.lines 读取和写入文件流

apache - WampServer : Your Port 80 is actually used by Microsoft-HTTPAPI/2. 0

java - WSDL网络服务

java - 使用 spring Rest 以自定义格式显示 json

c# - 使用 UriTemplate 将枚举和自定义类传递给 WCF RESTful 服务

java - 如何处理 CXF restful webservices 中的可选参数

java - 从项目 react 器中的通量中采样除第一个元素之外的所有元素

Java ConcurrentHashMap 操作原子性

android - 使用 kSoap2 在 android 中访问 WebService