断言集合不包含项目


75

使用用于Java的hamcrest库,可以执行以下操作的一种很好的可读方式:

assertThat(someCollection, hasItem(someItem))

我要确保其中someCollection不包含任何项目someItem

Answers:


128

否定hasItem断言

assertThat(someCollection, not(hasItem(someItem)))

12
导入软件包IsNot(import static org.hamcrest.core.IsNot.not)后,它运行良好。
harschware

Matcherzs定义了所有的。工厂方法,因此您可以进行单个*静态导入。如果没有其他人在下一个小时内张贴该行,我将查找工作。
David Harkness

6
@harschware-来自基础教程import static org.hamcrest.MatcherAssert.assertThat;以及import static org.hamcrest.Matchers.*;
David Harkness

7

如果您需要声明一个数组,则使用相同的逻辑 not(hasItemInArray())

final String[] availableIds = {"123", "321"};
final String userId = "333";

softAssert.assertThat("Id not found", availableIds, not(hasItemInArray(userId)));
softAssert.assertAll();
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.