Ответ 1
Внутренняя тестовая конфигурация
Пример внутренней @Configuration для вашего теста:
@RunWith(SpringRunner.class)
@SpringBootTest
public class SomeTest {
@Configuration
static class ContextConfiguration {
@Bean
@Primary //may omit this if this is the only SomeBean defined/visible
public SomeBean someBean () {
return new SomeBean();
}
}
@Autowired
private SomeBean someBean;
@Test
public void testMethod() {
// test
}
}
Аннотации уровня класса @RunWith(SpringRunner.class)
и @SpringBootTest
относятся к Spring Boot 1.4+, но пример внутренней @Configuration остается действительным даже для более старых версий с использованием @RunWith(SpringJUnit4ClassRunner.class)
и @SpringApplicationConfiguration
или @ContextConfiguration
.
@Primary
Аннотация @Primary
в определении bean заключается в том, чтобы гарантировать, что у этого будет приоритет, если найдено более одного.
Конфигурация повторного использования
Если вы хотите повторно использовать тестовую конфигурацию для нескольких тестов, вы можете определить автономный класс конфигурации с Spring Profile @Profile("test")
. Затем попросите свой тестовый класс активировать профиль с помощью @ActiveProfiles("test")
. См. Полный код:
@RunWith(SpringRunner.class)
@SpringBootTests
@ActiveProfiles("test")
public class SomeTest {
@Autowired
private SomeBean someBean;
@Test
public void testMethod() {
// test
}
}
@Configuration
@Profile("test")
public class TestConfiguration {
@Bean
@Primary //may omit this if this is the only SomeBean defined/visible
public SomeBean someBean() {
return new SomeBean();
}
}