首页 > 解决方案 > JUnit+Mockito 或 RestAssured

问题描述

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

我在以前的项目中使用过 JUnit 和 Mockito,我知道它需要大量的时间/精力来获得足够的代码覆盖率。但最近我开始了解 Rest-Assured,它似乎很有希望。请根据您的经验提出建议。

标签: javaspringjunitmockitorest-assured

解决方案


在这种情况下,JUnit 是一个runner。这个问题实际上是关于单元测试和集成测试之间的区别,两者都可以使用JUnit作为周围的执行框架来实现。

您可以使用多种框架组合。一些常见的:

  • 用于单元测试的 JUnit + mockito - 您的 REST API 控制器 bean 连接到轻量级/模拟依赖项,您通过 JAVA 执行 API
  • JUnit + Cucumber + RESTAssured 用于集成测试 - 您可以在其中编写一个测试夹具,该夹具期望针对正在运行的服务器执行以执行其 API

这些极端之间也有一些点。您必须决定您的测试在测试金字塔中的位置。对于高度排列的测试,您将需要编写单元测试以便能够轻松地实现排列并获得执行速度。如果您真的想冒烟测试您的 API 是否可用,并且已经对它们进行了单元测试,那么您将需要编写少量集成测试。

在频谱的各个点之间,有 mockito + 服务的本机测试库的组合。例如,在 Spring 中有 SpringTest,在 Jersey 中有 JerseyTest/Grizzly 框架。在这些情况下,会建立一个非真实的 http 服务器来托管您的 REST 服务,然后您通过框架的客户端通过对它的模拟 REST 调用对其进行测试。本单元测试 HTTP 编组层以及 REST 控制器代码的第一层。


推荐阅读