假设我有一个返回Animal
s集合的方法。在一种情况下,我想检查此方法是否包含7个Dog
s。检查数字不是问题,但是如何检查所有动物都是Dog
的实例?
我想我可以遍历这个集合,但是有没有更多的JUnity说“断言这个集合只包含狗的对象”?
答案 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用于生产代码。