Java 将空集合与Hamcrest'匹配;s hasItem()
如何使用TestNG和Hamcrest中的Java 将空集合与Hamcrest'匹配;s hasItem(),java,collections,testng,hamcrest,Java,Collections,Testng,Hamcrest,如何使用TestNG和Hamcrest中的hasItem匹配空集合?这是我通过一次测试得到的结果 java.lang.AssertionError: Expected: a collection containing email = null phone = null got: <[]> 其中,expectedMatcher由数据提供者提供。因此,我不确定要传递什么来匹配此“空集合”。我正在传递默认构造函数,但我知道这不起作用,因为它使用null成员创建集合 这是我的数据提供程序
hasItem
匹配空集合?这是我通过一次测试得到的结果
java.lang.AssertionError:
Expected: a collection containing email = null phone = null
got: <[]>
其中,expectedMatcher
由数据提供者提供。因此,我不确定要传递什么来匹配此“空集合”。我正在传递默认构造函数,但我知道这不起作用,因为它使用null
成员创建集合
这是我的数据提供程序的一部分:
{ new ContactAgentUsageMatcher()}
当配置的
电子邮件
和名称
都设置为null
时,您的自定义匹配器将匹配任何现有的人员
。但是,该集合不包含任何要匹配的人员。在这种情况下,Hamcrest's未能通过测试,并且是用于空集合的错误匹配器
以下是两种解决方法:
更改数据提供程序和测试以获取完整匹配程序,包括hasItem
。对于上述情况,您将通过。缺点是您需要告诉Java编译器应该使用哪种泛型类型,这会使测试变得混乱
创建第二个测试以处理生成空集合的数据集
assertThat(argument.getAllValues(), hasItem(expectedMatcher));
{ new ContactAgentUsageMatcher()}