Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 测试RESTful服务的方法?_Java_Unit Testing_Rest - Fatal编程技术网

Java 测试RESTful服务的方法?

Java 测试RESTful服务的方法?,java,unit-testing,rest,Java,Unit Testing,Rest,我想通过HTTP直接测试我的RESTful应用程序,我正在寻找能够帮助我完成这项任务的工具。基本上,我正在寻找一个简单的HTTP请求包装器,可以提交HTML表单或JSON或XML格式的序列化资源 如果有一种方法可以验证服务是否也遵循REST体系结构准则(无状态、URI、内容协商等),那就太好了 能够与JUnit一起使用它将是一个方便的奖励。你知道有哪些库可以帮助我完成我想做的事情吗(这些库不仅仅是一个简单的http客户端)?也许Selenium可以提供一些帮助,但肯定不是全部。看看是否有帮助 编

我想通过HTTP直接测试我的RESTful应用程序,我正在寻找能够帮助我完成这项任务的工具。基本上,我正在寻找一个简单的HTTP请求包装器,可以提交HTML表单或JSON或XML格式的序列化资源

如果有一种方法可以验证服务是否也遵循REST体系结构准则(无状态、URI、内容协商等),那就太好了


能够与JUnit一起使用它将是一个方便的奖励。你知道有哪些库可以帮助我完成我想做的事情吗(这些库不仅仅是一个简单的http客户端)?

也许Selenium可以提供一些帮助,但肯定不是全部。

看看是否有帮助

编辑:目前我正在使用Postman-REST客户端,这是一个谷歌浏览器插件,非常棒

我想这会很适合你的。发送请求和解析XML和JSON响应非常容易。例如,假设对“/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]
  }]
 }
}
您可以这样发出请求并验证响应:

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

Fiddler是一个非常有用的工具,您可以使用各种请求动词(如GET、POST、PUT、DELETE等)创建基于XML的HTTP请求


还有Jersey测试框架(http://jersey.java.net/nonav/documentation/latest/user-guide.html#test-框架)但正如Johan已经提到的REST assured框架,我也推荐这个框架-它有一些很好的特性,比如类似DSL的语法、XPath和模式验证,轻松上传文件并使用Groovy Lambda表达式搜索返回的JSON结构

我写了两篇文章

  • 第一个比较了REST-assured和Jersey测试框架()
  • 第二部分针对给定的REST服务()

这不再是真正的“单元”测试。我觉得这个词已经没有任何意义了。真的。。。我还在想单元测试的方法,改变了它。不过,如果有Java集成就好了(实际上,单元测试可能会因为请求和响应模拟而陷入一场大麻烦,我想以某种方式避免这种情况)。别忘了,单元测试并没有规定什么是单元。iMo REST服务可以被看作是一个单位,如果它是孤立的-例如通过小级别的单元测试来测试。我已经使用了Firefox的附加组件。我将考虑使用HTML单元-硒,据我所知,它对JSON和XML没有直接的支持,这对于浏览器级测试-用户交互测试,甚至不是所有的工作都是有好处的。(AJAX)。另外,我特别不喜欢Selenium的一个方面(别误会,我喜欢总体上使用Selenium)是Selenium IDE,它应该会有所帮助,但是它只会生成非常糟糕的代码(例如,不支持JUnit4),并且行为与服务器不同(在没有补丁的情况下尝试变量)。所有基于浏览器的扩展都会让您很难测试api,因为它不允许您创建托管浏览器的独立环境,因此您无法更改大多数http头来测试gzip压缩。例如,1对于Postman,它隐藏了服务器返回302的事实,之后又返回了另一个get。