如何比较Junit中的动态对象类型: -
while (objList.hasNext()) {
Object<String> obj = objList.next();
Assert.assertEquals("expected", obj);
}
在这种情况下,如果一次出现失败,整个测试将失败。如果我在断言测试之前使用条件来指向期望的字符串
,这是一个好方法吗? 像这样:while (objList.hasNext()) {
Object<String> obj = objList.next();
if (obj.equals("expected")) {
Assert.assertEquals("expected", obj);
}
}
但在这种情况下,没有必要进行Junit断言测试。因为我已经在做Junit打算做的事了 谢谢。
答案 0 :(得分:3)
它允许您“收集”错误并最终输出它们。如果你使用它,JUnit在第一个错误时不会失败。
答案 1 :(得分:1)
你在这里要问的并不完全清楚。如果我们知道你在迭代什么会更容易,但假设它是一个Iterable,你可能最好看看hamcrest matchers。
例如
asserThat(objList, Matchers.hasItem(expected);
如果预期等于你的iterable中的元素,将通过。查看与junit捆绑在一起的匹配器,或将外部hamcrest库添加到测试项目中。
答案 2 :(得分:0)
我对大型数据结构所做的是使用合理的toString()方法并进行比较。
e.g。
assertEquals(""+expected, ""+obj);
assertEquals(expected, obj);
这样做的原因是,使用IDE(显示差异)或文本比较,您可以看到所有不同的值以及它们的不同之处。第二项检查是确认它们确实是平等的。
答案 3 :(得分:0)
您可以使用基于数组的断言。为此,您必须将枚举转换为数组。
Object [] enumAsArray = Collections.list(objList).toArray();