JUnit 参数化测试 Json/Text
JUnit Paramterized test Json/Text
嗨,我有 2 个测试方法,它们几乎相同,但它们之间有一个区别,我想创建一个具有值源 json 和 text/plain 的参数化测试方法,如何从这两种方法创建参数化测试。
@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"));
}
这两个测试仅在最后一个断言 (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);
}
}
嗨,我有 2 个测试方法,它们几乎相同,但它们之间有一个区别,我想创建一个具有值源 json 和 text/plain 的参数化测试方法,如何从这两种方法创建参数化测试。
@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"));
}
这两个测试仅在最后一个断言 (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);
}
}