У меня есть многомодульный проект, где не каждый модуль на самом деле является приложением, но многие из них являются библиотеками. Эти библиотеки выполняют основную работу, и я хочу проверить их там, где они реализованы. Текущие зависимости библиотек:
implementation 'org.springframework.boot:spring-boot-starter'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
В основном источнике есть класс с @Configuration
и одним бином:
@Bean public String testString() { return "A Test String"; }
Я получил 2 тестовых класса:
@RunWith(SpringRunner.class)
@SpringBootTest
@ActiveProfiles({"default", "test"})
public class Test1 {
@Test
public void conextLoaded() {
}
}
-
@RunWith(SpringRunner.class)
@SpringBootTest
@ActiveProfiles({"default", "test"})
public class Test2 {
@Autowired
private String testString;
@Test
public void conextLoaded() {
}
}
Первый тест работает. Второго нет. В этом проекте нигде нет @SpringBootApplication
, поэтому в том же пакете, что и в тестах, я добавил конфигурацию теста:
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan("com.to.config")
public class LibTestConfiguration {
}
И это не работает. То же самое для классов, которые @Service
. Они не в контексте. Как я могу заставить его вести себя как обычное загрузочное приложение Spring, при этом оно на самом деле не загружается и загружать конфиги и контексты из нужных мне файлов конфигурации? Профиль по умолчанию и тестовый профиль имеют большинство своих свойств (на данный момент), и я хочу, чтобы они загружались, как если бы я запускал tomcat.