Это зависит от разницы между @MockBean
и @Autowired
.
@Autowired
выполняет поиск только в SpringContext
для компонента этого типа. Это означает, что вам нужно будет создать этот bean-компонент, если вам нужно «autowire»:
@MockBean
делает именно то, что вы ожидаете от имени, он создает «макет» из сервис, и внедряет его как бин.
, поэтому этот
class MyTest {
@MockBean
MyService myService;
}
эквивалентен этому
@Import(MyTest.Config.class)
class MyTest {
@Autowired
MyService myService;
@TestConfiguration
static class Config {
@Bean
MyService myService() {
return Mockito.mock(MyService.class);
}
}
}
Итак, если вам нужно иметь В других тестах другого компонента типа MyService
необходимо создать компонент в @TestConfiguration
аннотированном классе
@Import(MyTest.Config.class)
class MyTest {
@Autowired
MyService myService;
@TestConfiguration
static class Config {
@Bean
MyService myService() {
return new MyServiceImpl();
}
}
}
Или в классе, аннотированном @Configuration
@Import(MyConfig.class)
class MyTest {
@Autowired
MyService myService;
}
@Configuration
public class MyConfig {
@Bean
MyService myService() {
return new MyServiceImpl();
}
}