【问题标题】:How to write a proper test case for controller, service and Dao in spirng boot using junit 5?如何使用 junit 5 在 Spring Boot 中为控制器、服务和 Dao 编写适当的测试用例?
【发布时间】:2020-03-02 08:04:40
【问题描述】:

如何在 spring boot 中为 controllerserviceDao 编写合适的测试用例使用 junit 5 并有明确的解释

【问题讨论】:

    标签: spring-boot unit-testing junit5


    【解决方案1】:

    Spring Boot 有一个测试切片的概念。这种类型的测试配置只会设置应用程序的一部分,从而进行测试:

    • 不太可能因不相关的更改而中断,
    • 比配置所有应用程序服务更快(使用@SpringBootTest 注解)。

    例如,@JsonTest slice 将以与生产环境相同的方式配置 ObjectMapper(以及一些 JSON 测试实用程序)。

    无论如何,对于您提到的类型:

    • DAO - 使用 @DataJpaTest 切片 - 它将使用内存数据库配置 Hibernate 并加载所有实体和存储库。
    • Controllers - 使用@WebMvcTest(YourController.class) slice - 它只会加载 Spring MVC、advice 和你的控制器的配置。您将对deal with dependencies of that controller负责。
    • 服务 - 很大程度上取决于您的服务在做什么。我更喜欢对依赖于 Spring 配置的 bean 的服务使用切片,但是您的测试也可以是一个非常简单的标准 [j] 单元测试,其中所有依赖项都被模拟掉了。 - 取决于您想要做出的妥协。

    这不会随着 junit 的第五个版本而改变。唯一的区别是您不再需要使用 @RunWith(SpringRunner.class) 注释您的测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-30
      • 1970-01-01
      • 2021-07-26
      • 2021-05-20
      • 2022-01-19
      • 2014-12-01
      • 1970-01-01
      • 2012-01-25
      相关资源
      最近更新 更多