2017-02-05 5 views
1

Ich versuche Integrationstests mit Spring zu lernen. So verfolge ich dieses Tutorial:So führen Sie einen Integrationstest im Frühling mit @SpringBootTest durch

http://www.lucassaldanha.com/unit-and-integration-tests-in-spring-boot/

Ich bin fase ein Test-Klasse wie folgt aus:

@RunWith(SpringRunner.class) 
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) 
public class GreetingControllerTest { 

    @Test 
    public void helloTest(){  
     TestRestTemplate restTemplate = new TestRestTemplate(); 
     Hello hello = restTemplate.getForObject("http://localhost:8080/hello", Hello.class); 

     Assert.assertEquals(hello.getMessage(), "ola!"); 
    } 
} 

Aber wenn ich mvn installieren, erhalte ich diese Fehlermeldung:

E/A-Fehler bei GET-Anforderung für "http://localhost:8080/hello": Verbindung abgelehnt; verschachtelte Ausnahme ist java.net.ConnectException: Verbindung verweigert

Also ... Was mache ich falsch? Was muss ich tun, damit mein Test funktioniert?

Hinweis: Wenn ich laufen mvn feder boot: laufen das Projekt funktioniert gut, und ich fordere den Endpunkt mit jedem beliebigen Browser.

+0

Ich glaube, dass Sie die 'TestRestTemplate' injizieren müssen. Entweder das, oder Sie müssen den Port nicht angeben, da Sie 'RANDOM_PORT' verwenden. – chrylis

Antwort

1

Das ist wegen der folgenden Eigenschaft in Ihrer Testklasse:

@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) 

Wie pro Feder documentation, es bindet die Anwendung auf einem beliebigen Port. Beim Senden der Anfrage besteht die Möglichkeit, dass die App nicht unter port 8080 ausgeführt wird. Daher wird der Fehler "Verbindung verweigert" angezeigt.

Wenn Sie die App auf einem bestimmten Port ausführen möchten, müssen Sie webEnvironment Eigenschaft und mit Anmerkungen versehen Klasse mit dem folgenden entfernen:

@IntegrationTest("server.port=8080")

Ein weiterer Ansatz ist es, den Anschluss zu bekommen und fügen Sie sie in die URL, unten ist das Snippet, um den Port zu bekommen:

@Autowired 
Environment environment; 

String port = environment.getProperty("local.server.port"); 
+0

Es hat funktioniert. Danke Darshan Mehta! –

Verwandte Themen