如何集成测试自定义Spring Boot样式启动程序库的自动配置?
作者:互联网
我正在编写一个库来提供一些功能,这些功能在我使用的多个不同的Spring Boot应用程序之间共享.
我想做类似于许多Spring Boot入门库提供的自动配置.那,或者使用它将我的库与应用程序的ApplicationContext集成的其他一些简单的声明方式.
我找到了一些解释自动配置如何工作的资源.我可以弄清楚上面的问题.
但是,我还没有找到任何关于如何作为我的库测试套件的一部分进行测试的好例子,它适当地与Spring Boot应用程序集成.理想情况下,我会直接在库的测试中启动一个简单的Spring Boot应用程序,只是为了测试,为它添加正确的注释,并能够声明然后配置了正确的bean.
我尝试创建一个TestApplication类来执行该操作并使用SpringBootTest注释编写集成测试,但TestApplication从未在测试开始之前启动.
我可以做些什么来启动一个简单的应用程序,仅仅是为了测试我的库?我的测试是用Spock和Spock-Spring编写的,以防其他测试框架发生变化.
解决方法:
我能够使它与以下测试类一起工作:
@SpringBootTest
@ContextConfiguration(classes = TestApplication)
class DummyIntegrationSpec extends Specification {
@Autowired
DummyService dummyService
void 'dummy service should exist'() {
expect:
dummyService.getMessage() == DummyConfiguration.MESSAGE
}
}
这个TestApplication类位于src / test / groovy / com / example / project / TestApplication.groovy
@SpringBootApplication(scanBasePackages = 'com.example.project.config')
@EnableAutoConfiguration
class TestApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(TestApplication)
}
static void main(String[] args) {
SpringApplication.run(TestApplication, args)
}
}
当我将TestApplication类从src / main移动到src / test时,为了让TestApplication启动并加载正确的上下文,我必须做出两个关键的更改:
>需要将TestApplication类添加到ContextConfiguration批注中
>我的库的Java配置文件所在的包需要添加到SpringBootApplication scanBasePackages字段
库自动配置确实遵循与提供的链接tom中提到的类似的结构.
标签:spring,spring-boot-2,spock,spring-test 来源: https://codeday.me/bug/20190622/1265585.html