JUnit + Mockito 或 RestAssured

3

请帮我挑选适合测试 REST API (Java) 的正确方法。

我在之前的项目中使用了 JUnit 和 Mockito,我知道这需要大量的时间和努力才能达到足够的代码覆盖率。但最近我了解到 Rest-Assured,它似乎很有前途。请根据您的经验提供建议。


1
似乎REST assured并不适用于单元测试,因为它要么进行真实的HTTP调用,要么与Spring集成。此外,如果你采用先测试的方式,代码覆盖率应该不需要太多的努力。 - Loïc Le Doyen
1个回答

7
在这种情况下,JUnit是一个“运行器”。这个问题实际上是关于单元测试和集成测试之间的区别,两者都可以使用JUnit作为周围执行框架来实现。
你可以使用许多框架组合。一些常见的组合包括:
- JUnit + mockito 用于单元测试 - 在这里,你的REST API控制器bean被连接到轻量级/模拟依赖项,并通过JAVA执行API。 - JUnit + Cucumber + RESTAssured 用于集成测试 - 在这里,你编写一个测试夹具,期望针对正在运行的服务器执行以练习其API。
这两个极端之间也有一些中间点。你必须决定你的测试在测试金字塔上的位置。对于高度排列组合的测试,你将想要编写单元测试,以便能够轻松地实现排列组合并获得执行速度。如果你真的试图对API进行烟雾测试,已经对它们进行了单元测试,那么你将想要编写少量的集成测试。
在光谱的中间点之间,有一种mockito + 你的服务的本地测试库的组合。例如,在Spring中有SpringTest,在Jersey中有JerseyTest/Grizzly框架。在这些情况下,会启动一个非真实的http服务器来托管你的REST服务,并通过框架的客户端模拟REST调用来测试它。这个单元测试HTTP编组层以及第一层REST控制器代码。

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