JUnit:检查集合是否只包含某种类型的对象

时间:2011-06-09 12:44:55

标签: collections types junit

假设我有一个返回Animal s集合的方法。在一种情况下,我想检查此方法是否包含7个Dog s。检查数字不是问题,但是如何检查所有动物都是Dog的实例?

我想我可以遍历这个集合,但是有没有更多的JUnity说“断言这个集合只包含狗的对象”?

2 个答案:

答案 0 :(得分:2)

JUnit的断言方法不适合这种特定的东西。最好的办法是创建一个通用的辅助函数,如下所示:

public static void assertTypeForAll(Collection<?> c, Class<?> type) {
    for (Object o : c) {
        Assert.assertTrue("Object " + o + " should be a subclass of " + type, type.isInstance(o));
    }
}

然后你可以写:

assertTypeForAll(animals, Dog.class);

答案 1 :(得分:1)

当我开始在Groovy中编写单元测试时,我得到了很好的结果。对生产代码没有风险,但单元测试代码的大小大大减少:

assert animals.size == 7 && animals.every { it instanceof Dog }

唯一的问题是,几天后,您也希望将Groovy用于生产代码。

相关问题