我一直在努力为我写的基于Spring MVC的Rest服务找到一个简单的通用单元测试框架.
我一直在网上搜索并缩小到:
RestFuse(http://developer.eclipsesource.com/restfuse/)
休息保证(https://github.com/jayway/rest-assured)
MockMVC(http://www.petrikainulainen.net/programming/spring-framework/unit-testing-of-spring-mvc-controllers-rest-api/)
我喜欢RestFuse,因为它主要基于注释,但是放心似乎有一种更简单的方法来传递参数和检查响应.最后成为一个Spring MVC Rest Service项目,我想知道我是否应该坚持使用MockMVC在Spring中测试Rest Services的已经建立的方法.
有兴趣获得任何反馈,以及表现,过去的经验,如果还有什么我应该考虑.
Rest-Assured正在接受其他框架的测试,以测试Java中的REST服务.拥有BDD风格流畅的界面,它也易于阅读测试脚本,学习曲线极小.
我使用此框架将REST服务验证为最终用户,并且更容易为它们实现测试脚本.因此,我无法对REST保证的Spring MVC部分做出太多评论.
然而,这个博客后给你上RestAssured V2.2,其中包括更多细节spring-mock-mvc
建立在MockMVC给BDD风格放心通过REST接口流利风味顶层模块.该博客文章还提醒:
何时不使用它:
RestAssuredMockMvc
不应该被认为是vanilla的完全替代品,MockMvc
因为它包含与Spring MVC相关的更多特定功能.例如,目前没有对flash属性和主体等内容的一流支持.您可以通过使用拦截器来添加它们.标准REST Assured还支持许多RestAssuredMockMvc
API 中没有的不同身份验证方案和过滤器.您可能希望使用标准REST Assured API的另一个原因是,您的组织在实际容器中测试REST API非常重要(例如,如果您以特定于容器的方式配置了身份验证或授权),或者您'使用JAX-RS(或任何其他框架,无论语言).
最后,看看REST 保证代码库中的REST-Assured spring-mvc-webapp 示例,并决定是否要尝试使用它并充分利用REST保证和MockMVC框架.
MockMVC的优点在于它提供了一个模拟servlet容器,允许您集成测试REST服务,而无需部署到Web服务器.我相信在使用REST Assured spring-mock-mvc
模块时,您仍然可以利用此功能.
我刚学到的另一个框架是空手道.它的作者目前正在试验一种允许在模拟servlet容器中执行的机制(参见Peter Thomas的回答是否有一种机制来集成测试JAX-RS服务而不需要部署(la MockMVC)?).