ArrayList<Boolean> 断言 Java 没有 hamcrest

ArrayList<Boolean> Assertion Java without hamcrest

此测试为我提供了来自 API 的所有状态,作为布尔值 True 或 False:

List<Boolean> allStatus = event.getResponse().getBody().jsonPath().getList("enabled");

具体有多少status没有概念,也没有固定的大小;它可以是 20 号或 1 号。

为了检查这个断言,我 运行 一个 for 循环并检查每个值:

assertNotNull(allStatus);
for (Boolean status : allStatus) {
    assertEquals("FAILED Disable event status ", false, status);
}

我想知道有什么更好的方法来处理这种情况?

您可以使用 streams 介绍的 Java 8:

List<Boolean> allStatus = new ArrayList<>();
allStatus.stream().forEach((status) -> { assert status; });

这基本上与您提供的代码相同,但使用了更新的技术。您不能再快了,因为您 必须检查每个条目。

您可以使用 Java Streams 的 allMatch

assertNotNull(allStatus);
assertTrue(allStatus.stream().allMatch(b -> !b));

也许做一个断言?

boolean tmp = true;
for (Boolean status : allStatus) tmp = tmp&&status;
assert tmp;

我们也可以使用下面的断言:

List<Boolean> allStatus = event.getResponse().getBody().jsonPath().getList("enabled");
assertNotNull(allStatus);
    assertEquals("FAILED Disable event status ", false, allStatus.contains(Boolean.valueOf(true)));