进行契约测试的大致步骤:
1.在/test文件夹下创建一个测试基类;
2.在/resouce下创建契约文件;
3.执行测试(mvn clean install),若业务代码未实现-DskipTest跳过测试;
4.编写消费者消费存根;
sprin-cloud-contract的参考资料:https://cloud.spring.io/spring-cloud-contract/spring-cloud-contract.html#_links
https://github.com/spring-cloud-samples/spring-cloud-contract-samples/
1.创建测试基类代码如下:
package com.basetest;
import com.mywh.qjp.SpringBootDemo;
import io.restassured.module.mockmvc.RestAssuredMockMvc;
import org.junit.Before;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.web.context.WebApplicationContext;
@RunWith(SpringRunner.class)
@SpringBootTest(classes= SpringBootDemo.class,webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
//测试的applica context会被关闭,同时清除缓存
public class Basetest {
@Autowired
private WebApplicationContext context;
@Before
public void contextLoads() {
//使用上下文构建
RestAssuredMockMvc.webAppContextSetup(this.context);
}
}
2.在src\test\resources\contracts目录下编写契约文件(可以使用groovy和yaml格式),groovy格式如下:
import org.springframework.cloud.contract.spec.Contract
Contract.make {
description("should a number")
request {
method(GET())
urlPath ("/v1/prime-number/1"){
// queryParameters {
// parameter("number",2)
// }
}
}
response {
status(200)
body('''{
"boolean":false
}''')
}
}
3.执行测试mvn clean install(直接会安装到本地的maven厂库.m2下)
4.编写消费者,消费存根: