2016-08-04 47 views
4

Ich bin gerade zu Spring Boot 1.4.0 gewechselt, um die neuen Testfunktionen zu verwenden. Allerdings scheint es mir unmöglich zu sein, sie in Verbindung mit dem Spock-Framework zu verwenden. Betrachten Sie das folgende Spec:Probleme mit @SpringBootTest: Kontext wird nicht geladen und Spock kann nicht zu @Autowire wechseln

@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 

    } 

} 

Das Problem ist, dass die Anmerkung nicht einmal die MainWebApplication.class (sitzt auf einem Paket in der Hierarchie höher) in der Lage sein zu finden scheint, und folglich gibt es keinen Zusammenhang, also nichts zu Autowire. Ich weiß, das ist ziemlich neue Sachen, aber Dokumentation ist bisher nicht sehr gut, also wird diese Frage wahrscheinlich auch anderen helfen.

Antwort

2

Die aktuelle Version von Spock ist nicht kompatibel mit Spring Boot 1.4 @SpringBootTest Annotation, sollten Sie Ihre Spock-Version auf 1.1 aktualisieren, wenn Sie die neuen Anmerkungen verwenden möchten.

Weitere Einzelheiten finden Sie unter this answer.

+0

Vielen Dank. Komisch, dass du das nicht googeln kannst. Die Verbindung in der Antwort half – thomi

+1

Ich fand auch den harten Weg heraus; Glücklicherweise hat Spocks GitHub sich mit indikativen Namen (z. B. Spring Boot 1.4 Unterstützung oder etwas in dieser Richtung) verpflichtet :) –