JUnit+Mockito 或 RestAssured

Ank*_*dia 3 java junit spring mockito rest-assured

请帮助我选择正确的方法来测试 REST API (Java)。

我在之前的项目中使用过 JUnit 和 Mockito,并且我知道它需要大量的时间/精力才能获得足够的代码覆盖率。但最近我开始了解“放心”,它看起来很有前途。请根据您的经验提出建议。

Ash*_*eze 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 控制器代码的第一层。