Java 为许多测试类定义公共模拟对象

Java 为许多测试类定义公共模拟对象,java,spring,unit-testing,mockito,spring-boot-test,Java,Spring,Unit Testing,Mockito,Spring Boot Test,我正在学习使用Spring Boot进行单元测试。我已经使用Mockito从Spring数据存储库类创建了一个存根对象。一切正常,以下是代码: @SpringBootTest class UserServiceTest { @MockBean private UserRepository userRepository; @BeforeAll public void configureMock() { User user = new User("mishenev",

我正在学习使用Spring Boot进行单元测试。我已经使用Mockito从Spring数据存储库类创建了一个存根对象。一切正常,以下是代码:

@SpringBootTest
class UserServiceTest {

@MockBean
private UserRepository userRepository;

@BeforeAll
public void  configureMock() {
    User user = new User("mishenev",
            "Dmitrii",
            "Mishenev",
            "123",
            "mishenev.8@gmailcom",
            new UserSettings());
    when(userRepository.findById(anyLong())).thenReturn(Optional.of(user));
    when(userRepository.findUserByUserName(anyString())).thenReturn(user);

 // .. Tests
}
但是,如果我们不需要不同的存根行为,那么为每个类使用@BeforeAll测试存储库配置是一种样板样式。然后我尝试使用@TestConfiguration

之后我用

@SpringBootTest(classes = SpringRepositoryTestConfiguration.class)
但我现在无法使用
@MockBean
UserService
中自动连接存储库。 我想了解是否可以在一个配置类中取出并使用所有测试
存储库
类型存根。提前谢谢你

就用这个吧

class TestConfig {

   @Bean
   UserRepository userRepository() {
       final UserRepository repo = mock(UserRepository.class);
       .. do mocking ..
       return repo;

   }

}

然后您可以在需要它的地方导入(TestConfig.class)

只要使用这个

class TestConfig {

   @Bean
   UserRepository userRepository() {
       final UserRepository repo = mock(UserRepository.class);
       .. do mocking ..
       return repo;

   }

}

然后您可以在需要的地方导入(TestConfig.class)