gpt4 book ai didi

java - 放心 float 负零

转载 作者:行者123 更新时间:2023-11-30 08:31:33 26 4
gpt4 key购买 nike

我想用 Rest Assured 测试我的休息服务,但当服务返回负零值时我的测试失败。

放心测试:

    String methodName="multiply";
float[] operands = {1f,-2.5f,0};
float result = operands[0] * operands[1] * operands[2];
Response response = given().
pathParam("a",operands[0]).
pathParam("b",operands[1]).
pathParam("c",operands[2]).
contentType(JSON).
log().ifValidationFails().
when().
get("/"+methodName+"/{a}/{b}/{c}").
then().
assertThat().statusCode(200).
body("result",equalTo(result));

错误:

java.lang.AssertionError: JSON path result doesn't match.
Expected: <-0.0F>
Actual: 0.0

结果 json:

{"result":-0.0}

为什么我的 rest 服务返回负零值时测试失败?

最佳答案

我发现最好配置 REST Assured 以将所有 Json 数字返回为 BigDecimal,然后使用 hamcrest closeTo 匹配器。

String methodName="multiply";
double[] operands = {1,-2.5,0};
double result = operands[0] * operands[1] * operands[2];
Response response = given().
config(RestAssured.config().jsonConfig(jsonConfig().numberReturnType(BIG_DECIMAL))).
pathParam("a",operands[0]).
pathParam("b",operands[1]).
pathParam("c",operands[2]).
contentType(JSON).
log().ifValidationFails().
when().
get("/"+methodName+"/{a}/{b}/{c}").
then().
assertThat().statusCode(200).
log().ifValidationFails().
body("result",closeTo(BigDecimal.valueOf(result),new BigDecimal("1E-20")));

关于java - 放心 float 负零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40584072/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com