У меня есть приложение весенней загрузки, которое сканирует пакеты из двух внешних библиотек.
Application.java
@SpringBootApplication
@ComponentScan({ "com.ext.lib.one", "com.ext.lib.two", "my.app.stuff" })
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
application.yaml
// properties from com.ext.lib.one configurations
config:
aud:
certificate: <value>
ad: <value>
policy: <value>
aud: <value>
configUrl: <value>
...
Теперь я хочу протестировать контроллер покоя, используя @RestClientTest
.
MyClientTest.java
@RunWith(SpringRunner.class)
@RestClientTest(MyClient.class)
public class MyClientTest {
@Autowired
private MockRestServiceServer server;
@Autowired
private MyClient client;
@Test
public void doSomething() {}
}
Тест всегда жалуется на отсутствие бинов из внешних библиотек (com.ext.lib.one, com.ext.lib.two), которые обнаруживаются во время сканирования компонента.
Как я могу заставить этот тест работать с контекстом приложения без содержимого этих внешних библиотек, потому что у них не включена автоконфигурация (эти библиотеки в основном предназначены для аутентификации, которую я не хочу тестировать).
То, что я пробовал до сих пор
MyClientTest.java
@RunWith(SpringRunner.class)
@RestClientTest(MyClient.class)
@ComponentScan(basePackages = {"my.app.stuff"}, excludeFilters = @Filter(type = FilterType.REGEX, pattern = "com\\.ext\\.lib\\.one\\..*")))
// additionally
@EnableAutoConfiguration(exclude = {com.ext.lib.one.configuration.ExtConfiguration.class})
public class MyClientTest {
@Autowired
private MockRestServiceServer server;
@Autowired
private MyClient client;
@Test
public void doSomething() {}
}
По-прежнему всегда пакет com.ext.lib.one сканируется во время теста.