请帮助我选择测试REST API(Java(的正确方法。
我在以前的项目中使用过JUnit和Mockito,我知道它需要大量的时间/精力来获得足够的代码覆盖率。但最近我了解了Rest Assured,它似乎很有前景。请根据您的经验提出建议。
JUnit在这个实例中是一个运行程序。这个问题实际上是关于单元测试和集成测试之间的区别,这两种测试都可以使用JUnit作为周围的执行框架来实现。
您可以使用多种框架组合。一些常见的:
- 用于单元测试的JUnit+mockito-其中您的REST API控制器bean连接到轻量级/模拟依赖项,您通过JAVA执行API
- JUnit+Cucumber+RESTAssured用于集成测试-您编写一个测试夹具,该夹具期望在运行的服务器上执行,以练习其API
这些极端之间也有一些点。你必须决定你的测试在测试金字塔上的位置。对于高度排列的测试,您需要编写单元测试,以便能够轻松实现排列并提高执行速度。如果您真的想测试API是否可用,并且已经对它们进行了单元测试,那么您将需要编写少量集成测试。
在这两个点之间,有一个mockito+您服务的本地测试库的组合。例如,在春季有春季测试,在泽西岛有JerseyTest/Grizzly框架。在这些情况下,一个非真实的http服务器将托管您的REST服务,您可以通过框架的客户端对其进行模拟REST调用来测试它。本单元测试HTTP编组层以及REST控制器代码的第一层。