【问题标题】:TestRestTemplate vs WebTestClient vs RestAssured : What is the best approach for integration testing of Spring Boot Rest APITestRestTemplate vs WebTestClient vs RestAssured:什么是 Spring Boot Rest API 集成测试的最佳方法
【发布时间】:2020-08-02 17:41:03
【问题描述】:

三个 API 中的哪一个:TestRestTemplate、WebTestClient、RestAssured 对于 Spring Boot Rest API(非反应式)的以下方面的集成测试最有效:

  1. 确保增量版本与 Spring boot 的兼容性。
  2. 易于使用且广泛的断言,用于检查状态代码、标头、JSON/XML 有效负载验证、响应时间等。
  3. 可以测试spring容器配置。
  4. 跨所有端点重复使用特定检查的功能。
  5. 是最稳定的,因此是行业常见的做法。

很少有初步发现会阻止其中一个被标记为明显的赢家:

  • TestRestTemplate 和 WebTestClient 是 Spring 内置 API,因此可通过 Spring Boot 自动配置。最新版本的 RestAssured(4.0.0 及更高版本)可能会出现 Spring Boot 问题(java.lang.NoClassDefFoundError: io/restassured/mapper/factory/GsonObjectMapperFactory)并且需要显式添加依赖项。

  • 与 TestRestTemplate 相比,WebTestClient(一个 Fluent API)似乎具有很好且易于使用的语法,但它是非常新的,并且没有足够的示例显示其在非反应式 Rest API 中的使用以及广泛的断言 API 的可用性

  • RestTemplate(TestRestTemplate 所基于的 API)将在未来的 Spring Boot 版本中被弃用。

来自经验丰富的开发人员的反馈会很有帮助。

【问题讨论】:

    标签: spring-boot rest testing


    【解决方案1】:

    我选择了 WebTestClient,对此我很满意。正如您所写的,WebTestClient 是内置的 Spring Boot,所以这是我开始使用 WebTestClient 的主要原因,因为如果我有很好的开箱即用解决方案,我不想添加另一个依赖项。无论您的应用程序是否是反应式的,您都可以使用 WebTestClient。它支持 JSONPath。我也有使用 TestRestTemplate 的经验,但我认为 WebTestClient 更好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-12
      • 2018-02-09
      • 1970-01-01
      • 2013-04-23
      • 2017-11-02
      • 2020-12-25
      • 2018-11-25
      相关资源
      最近更新 更多