嗨,我有2种测试方法,它们几乎相同,但是它们之间是一个区别,我想创建一个具有valuesource json和text / plain的参数化测试方法,如何从这2种方法创建参数化测试
@Test
public void shouldTestReturnWorkInText()
{
given().header(HttpHeaders.ACCEPT, MediaType.TEXT_PLAIN_VALUE)
.when()
.get(getContextBaseUrl())
.peek()
.then()
.statusCode(HttpStatus.OK.value())
.body(equalTo("work"));
}
@Test
public void shouldTestReturnWorkInJSON()
{
given().header(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE)
.when()
.get(getContextBaseUrl())
.peek()
.then()
.statusCode(HttpStatus.OK.value())
.body("message", equalTo("work"));
}
答案 0 :(得分:0)
这两个测试仅在最后一个断言(body()
)上有所不同,因此您可以提取最多statusCode()
个表达式的变量,然后根据提供的内容类型执行特定的body()
断言作为测试参数
@ValueSource(strings = { MediaType.TEXT_PLAIN_VALUE, MediaType.APPLICATION_JSON_VALUE })
void shouldTestReturnWorkFor(String contentType) {
ValidatableResponse response = given().header(HttpHeaders.ACCEPT, contentType)
.when()
.get(getContextBaseUrl())
.peek()
.then()
.statusCode(HttpStatus.OK.value());
if (contentType.equals(MediaType.APPLICATION_JSON_VALUE)) {
response.body("message", equalTo("work"));
} else if (contentType.equals(MediaType.TEXT_PLAIN_VALUE)) {
response.body(equalTo("work"));
} else {
throw new IllegalArgumentException("Unsupported content type: " + contentType);
}
}