如何在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匹配器?

最佳答案

根据此合同,As Set必须实现equals(..):


  比较指定对象与此设置是否相等。退货
  如果指定对象也是一个集合,则为true,两个集合
  具有相同的大小,并且指定集中的每个成员都是
  包含在此集合中(或等效地,此集合中的每个成员都是
  包含在指定的集合中)。此定义可确保
  equals方法可在不同的实现中正常工作
  设置界面。


一个简单的EasyMock.eq(ecpectedSet)即可完成工作。

如果只是集合的大小,那么@Guillaume的答案就是正确的选择。

10-07 12:51