【问题标题】:JUnit+Mockito Or RestAssuredJUnit+Mockito 或 RestAssured
【发布时间】:2018-11-29 07:21:21
【问题描述】:

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

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

【问题讨论】:

  • 似乎 REST 保证不适用于 单元测试,因为它既可以进行真正的 HTTP 调用,也可以与 Spring 集成。此外,如果您先测试,则代码覆盖率不应该需要太多努力。

标签: java spring junit mockito rest-assured


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-04
    • 2020-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多