EasyMock:期待集合中的元素数量

时间:2010-11-15 16:31:34

标签: java easymock

如何验证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);

我是否必须推出自己的匹配器,是否内置了一个?或者有人有一个他们想要分享的setOfNObjectsetEq匹配器吗?

2 个答案:

答案 0 :(得分:3)

由于集合必须根据此合同实施等于(..):

  

将指定对象与此集进行相等性比较。返回   如果指定的对象也是一个集合,则为true,这两个集合   具有相同的大小,并且指定集的每个成员都是   包含在这个集合中(或者等效地,该集合的每个成员都是   包含在指定的集合中)。这个定义确保了   equals方法适用于不同的实现   设置界面。

一个简单的EasyMock.eq(ecpectedSet)可以胜任。

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

答案 1 :(得分:1)

您必须使用matches方法设计自己的匹配器:

  1. 检查参数数量
  2. 将set参数强制转换为Set
  3. 检查长度
  4. 抱歉,我手头没有类似的匹配器。