RestFuse与Rest Assured与MockMVC Rest服务单元测试框架比较

16

我一直在寻找一个简单的通用单元测试框架,用于测试我编写的基于Spring MVC的Rest服务。

我在网上搜索了一下,缩小了选择范围,目前有以下几种选择:

我喜欢RestFuse,因为它主要是基于注释的,但是Rest Assured似乎有一种更容易传递参数和检查响应的方法。最后,作为一个Spring MVC Rest Service项目,我想知道是否应该坚持使用MockMVC这种已经成熟的测试Rest Services的方式。

我很想听听任何反馈,以及性能、过去的经验和其他需要考虑的事项。

2个回答

10

Rest-Assured在Java中测试REST服务的框架中日益得到认可。其具有BDD样式的流畅接口,易于阅读测试脚本,并且学习曲线最小。

作为终端用户,我正在使用该框架来验证REST服务,并且很容易为它们实现测试脚本。因此,我对REST-assured的Spring MVC部分无法发表太多评论。

然而,这篇博客文章详细介绍了RestAssured v2.2,其中包括构建在MockMVC之上的spring-mock-mvc模块,通过REST assured提供了BDD样式的流畅接口。该博客文章还警告说:

何时不使用它:

RestAssuredMockMvc不能被视为完全替代普通的MockMvc,因为它包含更加特定于Spring MVC的功能。例如,目前没有一流支持诸如闪存属性和主体等内容。但是您可以通过使用拦截器添加这些内容。标准REST assured还支持许多不同的身份验证方案和过滤器,这些在RestAssuredMockMvc API中不可用。您可能想使用标准REST assured API的另一个原因是,如果在容器中配置了身份验证或授权(例如,如果将身份验证或授权配置为特定于容器的方式),或者正在使用JAX-RS(或任何其他语言的框架),则在真实容器中测试REST API非常重要。

最后,请查看REST-Assured代码库中的spring-mvc-webapp示例,并决定是否尝试使用它,以及充分利用REST-Assured和MockMVC框架。


6

MockMVC的优势在于它提供了一个模拟Servlet容器,允许你在不部署到Web服务器的情况下集成测试REST服务。我相信,在使用spring-mock-mvc模块时,仍然可以利用这种强大的功能来使用REST Assured。

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


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