首页 > 解决方案 > 如何使用 junit 5 在 spirng boot 中为控制器、服务和 Dao 编写适当的测试用例?

问题描述

如何使用junit 5Spring Boot中为控制器服务Dao编写正确的测试用例,并有清晰的解释

标签: spring-bootunit-testingjunit5

解决方案


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

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

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

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

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

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


推荐阅读