目前我正在这样做
while (permissions.hasNext()) {
assertEquals(permissions.next().getRole(), "everybody");
}
这很好用,但还有更好的方法吗?
问起这个问题,因为Sonar目前正在显示违规行为,并说“在此测试案例中至少添加一个断言”。我相信它无法读取循环内的断言。这是Sonar的一个错误吗?
答案 0 :(得分:3)
您可以使用Java 8流:
assertTrue(permissions
.stream()
.allMatch(permission -> permission.getRole().equals("everybody")));
答案 1 :(得分:2)
另一个非常富有表现力的解决方案(像往常一样) - 断言+ hamcrest匹配:
assertThat(yourCollection, everyItem(hasProperty("role", "everybody)));
(我个人不喜欢反思将用于将#34;角色"变成对getRole()的调用。有关详细信息,请参阅here。
答案 2 :(得分:1)
答案 3 :(得分:1)
使用AssertJ的解决方案:
assertThat(permissions).extracting("role").containsOnly("everybody");
或者如果你不喜欢反射来提取值,你可以使用stream:
assertThat(permissions.stream().map(Permission::getRole)).containsOnly("everybody");