1

如何在 Easymock 中验证集合中的元素数量?我正在测试的类应该调用一个方法,传入一个包含n 个元素的集合。现在,我正在匹配列表中的任何对象:

    mockFooSetReceiver.saveFooSet(eq(name), 
            (List<IFooSet>) anyObject());
    replay(mockFooSetReceiver);

我想指定集合中元素的数量:

    mockFooSetReceiver.saveFooSet(eq(name), 
            setOfNObject(100));
    replay(mockFooSetReceiver);

或者更好的是,匹配集合中的元素:

    mockFooSetReceiver.saveFooSet(eq(name), 
            setEq(ecpectedSet));
    replay(mockFooSetReceiver);

我是否必须滚动自己的匹配器,有内置的吗?或者有人有他们想分享的setOfNObject或匹配器吗?setEq

4

2 回答 2

3

由于 Sets 必须根据本合同实现 equals(..):

比较指定对象与此集合是否相等。如果指定对象也是一个集合,则返回 true,这两个集合具有相同的大小,并且指定集合的​​每个成员都包含在此集合中(或等效地,此集合的每个成员都包含在指定集合中)。此定义确保 equals 方法在 set 接口的不同实现中正常工作。

一个简单的 EasyMock.eq(ecpectedSet) 就可以完成这项工作。

如果它只是集合的大小@Guillaume 的答案就是要走的路。

于 2010-11-15T16:48:12.513 回答
1

您必须设计自己的匹配器并在matches方法中:

  1. 检查参数的数量
  2. 将 set 参数强制转换为 Set
  3. 检查长度

抱歉,我手头没有类似的匹配器。

于 2010-11-15T16:43:52.580 回答