如何在 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{
}
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{
}