如何在testNG中验证一个大整数?

时间:2018-11-26 20:42:40

标签: testng

我的脚本中具有以下验证:

.body("entity.segments[0].segmentEnds[0].publicNoticeDate",equalTo("1514844812000"))

我遇到了以下令人困惑的失败:

java.lang.AssertionError: 1 expectation failed.
JSON path entity.segments[0].segmentEnds[0].publicNoticeDate doesn't match.
Expected: 1514844812000
  Actual: 1514844812000

我认为您可以立即看到我的无奈。如果我删除引号:

.body("entity.segments[0].segmentEnds[0].publicNoticeDate",equalTo(1514844812000))

然后Eclipse告诉我该值超出整数范围。

我尝试用 is()替换带 is() equalTo(),但效果不理想。

1 个答案:

答案 0 :(得分:0)

这是一个合理的解释。

我猜测entity.segments[0].segmentEnds[0].publicNoticeDate返回一个数字(也许是Long)。所以当你做

.body("entity.segments[0].segmentEnds[0].publicNoticeDate",equalTo("1514844812000"))

您正在将Long与字符串进行比较。通过调用“ equals()”方法进行相等性检查,由于它们不相等,因此测试失败。但是该错误消息使您感到困惑,因为没有独特的方法可以表明您期望使用字符串"1514844812000",但是又获得了Long1514844812000

要解决此问题,请尝试更改

.body("entity.segments[0].segmentEnds[0].publicNoticeDate",equalTo(1514844812000)

.body("entity.segments[0].segmentEnds[0].publicNoticeDate",equalTo(1514844812000L))

请注意,我如何在数字末尾添加“ L”以表示这是一个长整数。