【问题标题】:What does Spring Boot test documentation mean?Spring Boot 测试文档是什么意思?
【发布时间】:2022-01-23 23:29:33
【问题描述】:

Spring Boot test documentation 说:

如果您的测试使用 Spring Boot 的测试注解之一(例如 @SpringBootTest),此功能已自动启用。要使用这个 具有不同安排的功能,听众必须明确 添加...

“要以不同的排列方式使用此功能,必须显式添加侦听器”是什么意思?

【问题讨论】:

  • 你能澄清一下你具体做什么和不了解什么吗? “不同的安排” 仅表示您是否使用 Spring Boot 测试注释。
  • 我不知道什么时候使用这些监听器。什么意味着不使用 Spring Boot 测试注释。那是使用 Mockito @Mock 而不是 SpringBoot @MockBean 的意思吗?

标签: spring spring-boot spring-test spring-boot-test


【解决方案1】:

不使用任何 Spring Boot 测试注释意味着不使用 @SpringBootTest 或任何其他 Spring Boot Test slice annotation。有许多 Spring Boot 测试注释可以为您自动配置 Spring TestContext。我找不到显示所有这些的单个页面(可能会添加更多),但 Spring Boot 文档提到了它们,starting from 8.3.12+

您可以通过查看 import 语句轻松识别您放在类顶部的 Spring Boot 测试注释。它们都以org.springframework.boot.test 开头,例如@WebMvcTest@DataJpaTest@WebfluxTest

假设您不依赖 Spring Boot 测试注释并手动配置您的 Spring 测试上下文。在这种情况下,您需要在测试类顶部添加 @TestExecutionListeners({ MockitoTestExecutionListener.class, ResetMocksTestExecutionListener.class }) 才能使用 @MockBean/@SpyBean

@Mock@MockBeandifferent pitfall。使用@MockBean/@SpyBean,您可以在 Spring TestContext 中替换/添加 bean,而 @Mock 用于没有任何 Spring TestContext 的普通单元测试。

【讨论】:

    猜你喜欢
    • 2014-02-23
    • 1970-01-01
    • 2021-11-16
    • 2011-03-28
    • 1970-01-01
    • 1970-01-01
    • 2018-09-06
    • 2020-05-24
    • 1970-01-01
    相关资源
    最近更新 更多