spring-boot - 如何使用 junit 5 在 spirng boot 中为控制器、服务和 Dao 编写适当的测试用例?
问题描述
如何使用junit 5在Spring Boot中为控制器、服务和Dao编写正确的测试用例,并有清晰的解释
解决方案
Spring Boot 有一个测试切片的概念。这种类型的测试配置将只设置应用程序的一部分,从而进行测试:
- 不太可能因不相关的变化而中断,
@SpringBootTest
与配置所有应用程序服务(使用注释)相比更快。
例如@JsonTest
slice 将以与生产环境相同的方式配置 ObjectMapper(以及一些 JSON 测试实用程序)。
无论如何,对于您提到的类型:
- DAO - 使用
@DataJpaTest
切片 - 它将使用内存数据库配置 Hibernate 并加载所有实体和存储库。 - 控制器- 使用
@WebMvcTest(YourController.class)
切片 - 它只会加载 Spring MVC、建议和控制器的配置。您将负责处理该控制器的依赖关系。 - 服务- 很大程度上取决于您的服务在做什么。我更喜欢对依赖于 Spring 配置的 bean 的服务使用切片,但是您的测试也可以是一个非常简单的标准 [j] 单元测试,其中所有依赖项都被模拟掉了。- 取决于您想要做出的妥协。
这不会随着 junit 的第五个版本而改变。唯一的区别是您不再需要使用@RunWith(SpringRunner.class)
.
推荐阅读
- google-api - google drive Api 无法在生产环境中工作“无法启动浏览器”
- google-chrome - 测试损失和训练损失似乎没有改变值?
- python - 为什么我得到单个输入的多个答案
- r - 如何在 R 中进行多次查找?
- android-studio - Junit - Mockito 想要但没有被调用
- css - 如何控制 div 在弹性框中的显示
- angular - 图表未使用响应数据更新(Chart.js 3.2.1,ng2-charts 3.0.0-beta.9)
- c# - 如何使用 XamarinFormsMaps 在自定义地图上更改和标记/固定图标?
- python - 如何在Python中沿列堆叠不同维度的指标
- inheritance - 如何使用组合而不是继承?枚举调度?