SpringBoot集成Contract以及使用dbrider进行契约测试
环境
- SpringBoot ver.2.0.4.RELEASE
- rider-spring ver.1.2.11
- Java ver.1.8.0_161
相关知识点
SpringBoot集成Contract进行契约测试
添加依赖(版本自选)
1
testCompile('org.springframework.cloud:spring-cloud-starter-contract-verifier')
1
2
3
4
5dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}1
apply plugin: 'spring-cloud-contract'
1
classpath "org.springframework.cloud:spring-cloud-contract-gradle-plugin:2.0.0.RC1"
指定testbase类
1
2
3contracts {
baseClassForTests = 'com.thoughtworks.contractProducer.BaseMvcTest'
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17public abstract class BaseMvcTest {
private UserService userService;
public void setupController() {
RestAssuredMockMvc.standaloneSetup(new UserController(userService));
}
public void setUpUserControllerData() {
List<User> users = new ArrayList<>();
users.add(new User("李四", 12));
users.add(new User("张三", 14));
given(userService.getAll()).willReturn(users);
}
}
contract文件
通常以yml或者groovy编写测试文件:
- groovy写法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19Contract.make {
Map<String, String> userMap = new HashMap<>()
userMap.put("name", "张三")
userMap.put("role", "test1")
userMap.put("name", "李四")
userMap.put("role", "test2")
request {
url("/users")
method(HttpMethods.HttpMethod.GET)
}
response {
status(200)
body(userMap)
}
}yml写法
name: "should return users" request: url: /users method: GET response: status: 200 bodyFromFile: user.json
1
2
3
4
5
6
7
8
9
10
11
12
13
3. dbrider测试数据写法
```yaml
user:
- id: 1
name: "张三"
role: "test1"
password: "123"
- id: 2
name: "李四"
role: "test2"
password: "321"
集成dbrider至contract
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public abstract class BaseMvcTest {
private UserController userController;
public void setupController() {
RestAssuredMockMvc.standaloneSetup(userController);
}
}