@RestClientTest с Приложением, имеющим конфигурации от внешних библиотек - PullRequest
0 голосов
/ 04 июля 2019

У меня есть приложение весенней загрузки, которое сканирует пакеты из двух внешних библиотек.

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 сканируется во время теста.

...