14

我一直在尝试为我编写的基于 Spring MVC 的 Rest Services 找到一个简单的通用单元测试框架。

我一直在网上搜索并将其缩小到:

我喜欢 RestFuse,因为它主要是基于注释的,但请放心,似乎有一种更简单的方法来传递参数和检查响应。最后作为一个 Spring MVC Rest Service 项目,我想知道我是否应该坚持使用 MockMVC 在 Spring 中测试 Rest Services 的现有方法。

有兴趣获得任何反馈,以及性能、过去的经验以及是否还有其他我应该考虑的因素。

4

2 回答 2

10

Rest-Assured 在 Java 中测试 REST 服务的框架已被其他框架所接受。具有 BDD 风格的流畅界面,它也易于阅读测试脚本,学习曲线最小。

作为最终用户,我使用这个框架来验证 REST 服务,并且更容易为它们实现测试脚本。因此,我不能对 REST-assured 的 Spring MVC 部分发表太多评论。

但是,这篇博文为您提供了有关RestAssured v2.2 的更多详细信息,其中包括spring-mock-mvc构建在 MockMVC 之上的模块,通过 REST 保证提供 BDD 风格的流畅界面风格。该博客文章还警告说:

什么时候不使用:

RestAssuredMockMvc不被认为是 vanilla 的完全替代品,MockMvc因为它包含与 Spring MVC 耦合的更具体的特性。例如,现在还没有对 Flash 属性和主体等内容的一流支持。您可以使用拦截器添加它们。RestAssuredMockMvc标准 REST Assured 还支持API中不可用的许多不同的身份验证方案和过滤器。您可能想要使用标准 REST Assured API 的另一个原因是,如果您的组织在真实容器中测试 REST API 是否很重要(例如,如果您以容器特定的方式配置了身份验证或授权),或者如果您'正在使用 JAX-RS(或任何其他框架,无论语言如何)。

最后,查看 REST-assured 代码库中的 REST-Assured spring-mvc-webapp示例,并决定是否要尝试一下并充分利用 REST-assured 和 MockMVC 框架。

于 2016-01-07T16:12:14.527 回答
6

MockMVC 的美妙之处在于它提供了一个模拟 servlet 容器,允许您在不部署到 Web 服务器的情况下集成测试您的 REST 服务。我相信在将 REST Assured 与spring-mock-mvc模块一起使用时,您仍然可以利用此功能。

我刚刚学到的另一个框架是Karate。它的作者目前正在试验一种允许在模拟 servlet 容器中执行的机制(参见 Peter Thomas 对Is there a mechanism for integration testing JAX-RS services without deploying (a la MockMVC)? 的回答)。

于 2017-07-07T15:03:28.650 回答