2014-05-21 10 views
6

Ich entwickelte eine Spring MVC Webapp mit Restmethoden. Ich würde gerne RestAssured verwenden, um JUnit-Testklassen zu erstellen. Aus der Dokumentation sieht es wirklich einfach aus, aber ich habe stattdessen ein Problem. Grundsätzlich mag ich es verwenden, um eine Runtime-Tomcat-Instanz zu vermeiden, aber das Problem ist, dass, wenn ich die JUnit-Testklasse ausführen ich die folgende Ausnahme erhalten:RestAssuredMockMvc Verbindung zu http: // localhost: 8080 abgelehnt

org.apache.http.conn.HttpHostConnectException: Connection to http://localhost:8082 refused 
... 
Caused by: java.net.ConnectException: Connection refused 

Das ist meine JUnit-Klasse:

import static com.jayway.restassured.RestAssured.given; 
import org.junit.Before; 
import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.test.context.ContextConfiguration; 
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 
import org.springframework.test.context.web.WebAppConfiguration; 
import org.springframework.web.context.WebApplicationContext; 

import com.jayway.restassured.module.mockmvc.RestAssuredMockMvc; 

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations = {"file:src/test/resources/spring/application-test-config.xml"}) 
@WebAppConfiguration 
public class ExternalControllerTest { 
    private static final Logger logger = LoggerFactory.getLogger(ExternalControllerTest.class); 

    @Autowired 
    WebApplicationContext webApplicationContext; 

    @Before 
    public void setUp() throws Exception { 
     RestAssuredMockMvc.webAppContextSetup(webApplicationContext); 
    } 

    @Test 
    public void addClientDeviceId_Success() { 

      given().get("/api/test").then().statusCode(200); 

    } 

} 

ich habe auch versucht RestAssuredMockMvc direkt mit dem Controller-Klasse, aber das Ergebnis ist das gleiche zu konfigurieren:

RestAssuredMockMvc.standaloneSetup(new ExternalController()); 

der Controller sieht wie folgt aus:

In diesem Handbuch wird http://www.jayway.com/2014/01/14/unit-testing-spring-mvc-controllers-with-rest-assured/ angegeben, dass "der wichtigste Aspekt ist, dass es einfacher ist, die Umgebung zu starten. Sie müssen einen Container nicht laden (zum Beispiel Jetty oder Tomcat), Sie initialisieren RestAssuredMockMvc einfach mit einem Kontext (zum Beispiel einem Controller) und schon kann es losgehen. "Ich verstehe also nicht, wo das Problem liegt. Jeder Vorschlag?

die Datei Krieg mit Tomcat zum Einsatz funktioniert. Dank

Antwort

6

Sie sind die falschen Methoden statisch zu importieren. Sie importieren given aus com.jayway.restassured.RestAssured (io.restassured.RestAssured bei Verwendung von Version 3.x), aber Sie sollten statisch Importieren Sie die Methoden von com.jayway.restassured.module.mockmvc.RestAssuredMockMvc (io.restassured.module.mockmvc.RestAssuredMockMvc in Version 3.x) .Siehe die documentation für weitere Informationen.