具有来自外部库的配置的应用程序的@RestClientTest

时间:2019-07-04 14:21:25

标签: java spring-boot spring-boot-test

我有一个spring boot应用程序,它正在从两个外部库中扫描软件包。

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对rest控制器进行测试。

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)中缺少bean。

如何在没有这些外部库的内容的情况下使该测试在没有应用程序上下文的情况下工作,因为它们没有启用自动配置(这些库主要用于我不想测试的身份验证)。

到目前为止我尝试过的事情

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

0 个答案:

没有答案