如何比较\确定放心的双精度值

时间:2019-05-13 14:55:23

标签: java rest-assured

我正在尝试使用Java基本双精度值从JSON比较/断言double。 正确的方法是什么?

我通过Matchers.equalTo方法(见下文)使用了简单而常规的方法

public class A{
       private static double someJavaDouble = 12
}
given().
        header(.....).
when().
        get(url).
then().
        statusCode(200)
        body("value", Matchers.equalTo(someJavaDouble))

get(url)的响应为JSON:

{
    "success": true,
    "currentValue": 12.0
}

在上面的代码中,我收到此错误:

JSON path currentValue doesn't match.
Expected: <12.0>
  Actual: 12.0

p.s。 如果

body("value", Matchers.equalTo(12f))

2 个答案:

答案 0 :(得分:0)

由于JSON Serializer返回的值为Double,而不是原始数据类型double
您可以从Double Double.doubleValue()获取double值,也可以将double转换为Double new Double(someJavaDouble)

body("value", Matchers.equalTo(new Double(someJavaDouble)))

答案 1 :(得分:0)

RestAssured默认将数字解析为Float

基于github issue 1315,您可以对其进行配置以将其解析为Double:

JsonConfig jsonConfig = JsonConfig.jsonConfig()
    .numberReturnType(JsonPathConfig.NumberReturnType.DOUBLE);

RestAssured.config = RestAssured.config()
    .jsonConfig(jsonConfig);