Cách tốt nhất để chạy thử nghiệm tích hợp (ví dụ: @IntegrationTest
) với Spock là gì? Tôi muốn khởi động toàn bộ ứng dụng Spring Boot và thực hiện một số cuộc gọi HTTP để kiểm tra toàn bộ chức năng.Kiểm tra tích hợp với Spring Boot và Spock
tôi có thể làm điều đó với JUnit (lần đầu tiên chạy ứng dụng và sau đó kiểm tra thực hiện):
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = MyServer.class)
@WebAppConfiguration
@IntegrationTest
class MyTest {
RestTemplate template = new TestRestTemplate();
@Test
public void testDataRoutingWebSocketToHttp() {
def a = template.getForEntity("http://localhost:8080", String.class)
println a
}
}
Nhưng với Spock ứng dụng không khởi động:
@SpringApplicationConfiguration(classes = MyServer.class)
@WebAppConfiguration
@IntegrationTest
class MyTestSpec extends Specification {
RestTemplate template = new TestRestTemplate();
def "Do my test"() {
setup:
def a = template.getForEntity("http://localhost:8080", String.class)
expect:
println a
}
}
Đối với Spock, trong tất nhiên, tôi đã chỉ định các phụ thuộc thích hợp trong tệp xây dựng Gradle của tôi:
...
dependencies {
testCompile 'org.spockframework:spock-core:0.7-groovy-2.0'
testCompile 'org.spockframework:spock-spring:0.7-groovy-2.0'
}
...
Tôi có thiếu gì đó không?
Thú vị, tôi khá chắc chắn tôi đã thử trước và nó không hoạt động ... nhưng dù sao, cảm ơn! – kuceram
Có một lá cờ để cung cấp VM khi chạy thử nghiệm tích hợp không? Tôi đã sao chép cấu hình này và ứng dụng của tôi không bắt đầu. Tôi có quyền suy ra rằng MyServer là lớp có chú thích Cấu hình và EnableAutoConfiguration không? – loteq
Không cần cờ nào và khoản khấu trừ của bạn về MyServer là chính xác. Bạn có thể đọc thêm về @ContextConfiguration tại đây: http://docs.spring.io/spring/docs/4.0.x/spring-framework-reference/htmlsingle/#integration-testing-annotations-spring. Bạn đã có spock-spring trên classpath? –