Spring Boot 中所有 JUnit 测试的 Mock Bean

Mock Bean for all JUnit Tests in Spring Boot

在 Spring Boot 中,有没有办法为所有现有的 JUnit 测试模拟单个 bean,而不更改现有的测试 类(例如,通过添加注释或添加继承)?就像通过配置全局注入一个 bean。

假设您在主要源代码中使用 @SpringBootApplication 来定义 Spring 启动应用程序,您已经为该包中的所有内容(包括嵌套包)启用了组件扫描。

当运行测试时,src/test/java中的类(通常)也被添加到类路径中,因此也可以被扫描。

例如,如果您将 @SpringBootApplication 定义为 com.example.boot.MySpringBootApplication,那么 com.example.boot.MyTestConfiguration 将有资格进行组件扫描,即使前者在 src/main 中并且后者在 src/test。将它放在 src/test/java 目录中将确保它仅在 运行 测试时有效。

然后您可以在该配置中定义您想要的任何“全局”bean。

使用我提供的 package/class 个名字:

// File: src/test/java/com/example/boot/MyTestConfiguration.java

@Configuration // this will get component-scanned
public class MyTestConfiguration {

    @MockBean
    MyBean myGlobalMockBean;
}

然后,只要您不从上下文配置中省略该配置,MockBean 就应该始终在测试中存在。