<分区>
用 Java 测试 REST 服务的最佳方法是什么?开发人员通常采用哪些方法和工具集?
此外,如果您正在编写调用第三方 REST 服务的休息客户端。测试 REST 客户端的最佳方法是什么。您是否有与第三方 REST 服务通信的 JUnit 测试。您可能会遇到服务不可用的风险/或者如果没有特定凭据则无法访问生产 REST 服务。
标签 java web-services rest
<分区>
用 Java 测试 REST 服务的最佳方法是什么?开发人员通常采用哪些方法和工具集?
此外,如果您正在编写调用第三方 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 started和 usage指南以获取更多信息。
如果您使用 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/