2015-06-09 138 views
1

我正在寫我的測試,使用rest-assured和spring-boot。在集成測試期間服務未開始使用Spring-boot

@RunWith(SpringJUnit4ClassRunner.class) 
@SpringApplicationConfiguration(classes = ApplicationSErvice.class) 
@WebAppConfiguration 
@IntegrationTest("server.port:0")//dynamically pick up ports 
public class MyTestClass{ 
@Value("${local.server.port}") 
    int port; 

    @Before 
    public void setup(){ 
     RestAssured.port=port; 
    } 
@Test 
public void testMethod(){ 
//asserting 
} 

在日誌中我看到它說端口啓動Tomcat,啓動Tomcat的服務,但隨後失敗,此錯誤 -

ERROR 8480 --- [cat-startStop-1] org.apache.catalina.core.ContainerBase : A child container failed during start 

java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[/service]] 
    at java.util.concurrent.FutureTask.report(FutureTask.java:122) 
    at java.util.concurrent.FutureTask.get(FutureTask.java:188) 

回答

4

對於Web集成測試,你應該使用@WebIntegrationTest來代替。

@RunWith(SpringJUnit4ClassRunner.class) 
@SpringApplicationConfiguration(classes = Application.class) 
@WebIntegrationTest 
public class ApplicationTest { 

    @Value("${local.server.port}") 
    private int port; 

    @Before 
    public void setup() { 
     RestAssured.baseURI = "http://localhost:" + port; 
    } 

    @Test 
    public void testStatus() { 
     given().contentType(ContentType.JSON).get("/greeting").prettyPeek().then().statusCode(200); 
    } 

    @Test 
    public void testMessage() { 
     given().contentType(ContentType.JSON).get("/greeting").then() 
      .body("content", is("Hello, World!")); 
    } 

} 
+0

是不是一樣,但stil有問題。不知道是什麼導致了這個問題。它可以與servlet相關嗎? – worrynerd

+1

你有沒有想過這個?我看到完全相同的問題。 – Broonix

相關問題