Jos*_*ing 6 spring spring-test spock 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
}
}
Run Code Online (Sandbox Code Playgroud)
这个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)
}
}
Run Code Online (Sandbox Code Playgroud)
两个关键的变化,我不得不做,以使TestApplication开始,当我从我的移动类TestApplication加载正确的上下文src/main来src/test分别为:
需要将TestApplication类添加到ContextConfiguration批注
我的库的Java配置文件所在的包需要添加到SpringBootApplication scanBasePackages字段中
库自动配置的结构与提供的链接tom中提到的结构类似。