有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在没有hamcrest的情况下测试ArrayList<Boolean>断言Java

该测试将API中的所有状态作为布尔值(True或False)给出:

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

目前还不清楚会有多少身份,也没有固定的规模;可能是20号或1号

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

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

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


共 (3) 个答案

  1. # 1 楼答案

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

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

    您可以使用Java 8引入的streams

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

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

  3. # 3 楼答案

    您可以使用Java Streams的^{}

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