有没有适用于测试RESTful API的Java包?

5
我正在准备测试RESTful服务。我们大部分系统都是用Java和Eclipse构建的,所以我希望能够在这里进行测试。
我已经找到了rest-client (http://code.google.com/p/rest-client/) 用于手动和探索性测试,但是否有一组Java类可以让我的工作更轻松?我正在使用testNG作为测试平台,但希望有助手库可以节省时间。
我发现了http4e (http://www.ywebb.com/),但我真的想要一个FOSS的东西。
6个回答

10

您可以使用REST Assured来测试和验证Java中的REST服务,从JUnit或TestNG中非常容易。例如,假设对于名为“/lotto”的服务进行GET请求返回以下JSON:

{ "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] }] } }

那么您可以像这样使用 REST Assured 发起请求并验证响应(在此情况下是检查lotto id是否等于5):

expect().body("lotto.lottoId", equalTo(5)).when().get("/lotto");

不幸的是,未来某个任意的Java JDK版本会出现破坏REST Assured的已知问题。目前受影响的JDK版本为9+。 - lu_ko
我认为升级到Groovy 3时,这个问题将会得到解决。 - Johan

3
可能是一个选择。它有HTTP请求采样器,支持所有HTTP方法和断言来验证响应。 另一个选择可能是类似于soapUI的东西,它有一个API可以与您的测试用例集成,尽管我还没有尝试过。

研究了JMeter,看起来很有趣。对于我即将测试的SOAP API,SoapUI可能是个不错的选择。 - Zee Spencer
SoapUI似乎尽管名字中带有SOAP,但也完全支持REST。 - Rob Tanzola

1

CXF 显然支持 REST。我自己还没有尝试过 REST 支持,但我认为 CXF 是一个出色的、灵活的、基于标准的 Web 服务实现。


CXF做的比我需要的要多得多。我希望只有一个客户端。 - Zee Spencer

1

0

显然rest-client内置了一个库。我正在使用它与testNG和XStream一起使用,看起来正是医生所开的处方。


0
今天我在进行一个REST服务的单元测试时遇到了一些问题,我需要测试已部署的服务器以检查一些并发需求,因此我需要测试已部署的REST服务。
起初,我尝试了Johan建议的解决方案,并使用REST Assured开始了一些成功的尝试,但是在寻找更多文档时,我找到了这个:

http://uttesh.blogspot.com/2012/09/spring-rest-web-service-test.html

它基于Spring库,因此如果您正在使用Spring,则将继续使用来自同一供应商的东西,这总是很好的。

另外,我发现与REST Assured相比,从Spring中找到的库更容易理解,但这只是我的观点;)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接