@SpringBootTest 的问题:上下文未加载且 Spock 无法@Autowire
Issues with @SpringBootTest: Context not loading and Spock unable to @Autowire
我刚刚转移到 Spring Boot 1.4.0 以使用新的测试功能。但是,我似乎无法将它们与 Spock 框架结合使用。考虑以下规范:
@SpringBootTest(classes=[MainWebApplication.class], webEnvironment =SpringBootTest.WebEnvironment.RANDOM_PORT)
class RestTemplateExampleSpec extends Specification{
@Autowired
private TestRestTemplate restTemplate
def "Web application is Reachable and Status is 200 - OK"(){
when: "The root address is called"
def response = restTemplate.getForObject("/", String.class)
then: "The status code is 200 - OK"
response.statusCode == HttpStatus.OK
}
def "Endpoint /admin/users is available"(){
when: "/admin/users is called"
def response = restTemplate.getForEntity("/admin/users", String.class)
then: "The status code is 200 - OK"
response.statusCode == HttpStatus.OK
}
}
问题是注释似乎甚至无法找到 MainWebApplication.class
(位于层次结构中更高的包),因此没有上下文,所以 Autowire
。我意识到这是很新的东西,但是到目前为止的文档还不是很好,所以这个问题可能也会对其他人有所帮助。
当前版本的 Spock 与 Spring Boot 1.4 的 @SpringBootTest
注释不兼容,如果您想使用新的注释,您应该将您的 Spock 版本升级到 1.1。
有关详细信息,请参阅 。
我刚刚转移到 Spring Boot 1.4.0 以使用新的测试功能。但是,我似乎无法将它们与 Spock 框架结合使用。考虑以下规范:
@SpringBootTest(classes=[MainWebApplication.class], webEnvironment =SpringBootTest.WebEnvironment.RANDOM_PORT)
class RestTemplateExampleSpec extends Specification{
@Autowired
private TestRestTemplate restTemplate
def "Web application is Reachable and Status is 200 - OK"(){
when: "The root address is called"
def response = restTemplate.getForObject("/", String.class)
then: "The status code is 200 - OK"
response.statusCode == HttpStatus.OK
}
def "Endpoint /admin/users is available"(){
when: "/admin/users is called"
def response = restTemplate.getForEntity("/admin/users", String.class)
then: "The status code is 200 - OK"
response.statusCode == HttpStatus.OK
}
}
问题是注释似乎甚至无法找到 MainWebApplication.class
(位于层次结构中更高的包),因此没有上下文,所以 Autowire
。我意识到这是很新的东西,但是到目前为止的文档还不是很好,所以这个问题可能也会对其他人有所帮助。
当前版本的 Spock 与 Spring Boot 1.4 的 @SpringBootTest
注释不兼容,如果您想使用新的注释,您应该将您的 Spock 版本升级到 1.1。
有关详细信息,请参阅