如何在 JUnit 单元测试中从 运行 中排除 Spring 引导组件?

How to exclude a Spring Boot Component from running in JUnit unit tests?

How to exclude a Spring Boot Component from running in JUnit unit tests?

我试过的

如有错误请指正。 @ComponantScan 正在全局排除一个 class,在 main 和 test?

由于我不想在全局范围内排除它,仅在单元测试期间,有什么办法可以做到吗?

@Component
public class DatabaseInitialization {

    @Autowired
    private UserRepository userRepository;

    @PostConstruct
    private void postConstruct() {

        User user = new User();
        user.setEmail("app@test.com");
        user.setPassword("1234567");
        user.setFirstName("Charle");
        user.setLastName("P.");
        user.setIbanCode(2641874);
        user.setBicCode(63215472);
        user.setFriendsList("[]");

        userRepository.save(user);
    }
}

我还没有理解您的确切用例,但是这个 link 可能有助于了解如何排除自动配置 类 而 运行 测试用例 https://www.baeldung.com/spring-boot-exclude-auto-configuration-test

@MockBean 注解将一个 bean 替换为另一个由 Mockito 模拟实现的 bean。您不会在模拟上存根任何方法。您只关心用什么都不做的 bean 替换 bean。在你的测试中 class:

@SpringBootTest
class MyTest {

    @MockBean
    private DatabaseInitialization databaseInitialization;

在测试期间保持 运行 的 @PostConstruct

在您的测试文件夹中创建包含 post 构造的 class 并添加 @Primary 注释,以便它优先于主项目中的 class 如下所示.

@Primary
public class ClassContainingPostConstruct{   

}