gpt4 book ai didi

spring-boot - @SpringBootTest 与 @WebMvcTest & @DataJpaTest &service 单元测试,什么是最好的?

转载 作者:行者123 更新时间:2023-12-03 23:35:30 27 4
gpt4 key购买 nike

我有一个 SpringBoot MVC 应用程序,我想用测试来覆盖它。
我有 Controller 、服务和存储库层。
通过测试覆盖应用程序的最佳实践是什么?
人们为什么使用@SpringBootTest虽然它似乎可以通过 @WebMvcTest 分层测试& @DataJpaTest和服务单元测试?它更快,更细化,不是吗?
AFAIK 当@SpringBootTest使用它称为集成测试,这是否意味着它不应该经常出现?
我想每一 block 代码都应该被单元测试覆盖,集成覆盖是否一样?或者集成测试应该在舞台环境而不是在测试环境中工作?
如果我创建一个 @SpringBootTest 是不是一样(在性能方面)但模拟其他层? (假设我创建了多个 @SpringBootTest 并模拟其他层)。

最佳答案

  • @SpringBootTest加载完整的应用程序上下文,就像您在运行 Spring Boot 应用程序时启动 Spring 容器的方式一样。
  • @WebMvcTest仅加载 web 层,其中包括用于处理请求/响应的安全性、过滤器、拦截器等。通常你会为 @Controller 下的方法编写测试。或 @RestController .
  • @DataJpaTest仅加载 JPA 的配置。如果没有另外指定,它使用嵌入式内存 h2。
  • 理想情况下,服务层测试不应该有任何注释(除了那些有助于模拟的注释),因为这是您的业务逻辑(独立于任何配置)所在的位置。

  • 关于最佳实践,它实际上只是关注点分离。我很少用 @SpringBootTest除非它是为了在我的本地进行一些临时集成测试。注释如 @WebMvcTest使您的测试更加“模块化”并且速度稍快。

    关于spring-boot - @SpringBootTest 与 @WebMvcTest & @DataJpaTest &service 单元测试,什么是最好的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59097035/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com