我刚刚移到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。

有关更多详细信息,请参见this answer

关于spring - @SpringBootTest的问题: Context not loading and Spock unable to @Autowire,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38764318/

10-11 04:03