我有一个简单的JUnit测试。它失败了,除非我之前已经调用过相关函数。
失败:
@Test public void isTotalSuccess(){
writer.calculateStats();
Assert.assertFalse(writer.isTotalSuccess());
}
PASSES 并显示“TotalSuccess为false”:
@Test public void isTotalSuccess(){
writer.calculateStats();
// One additional line here
System.out.println("TotalSuccess is " + writer.isTotalSuccess());
Assert.assertFalse(writer.isTotalSuccess());
}
我不明白为什么会这样,因为通常嵌套的方法/函数会在它们的封闭函数之前被评估。
请解释为什么测试失败,除非被测试的方法已被调用一次。这种行为是否特定于JUnit,还是我错过了一些非常明显的东西?
更多信息:
这些测试是WriterTest
的一部分,正在测试Writer
writer
被声明为WriterTest
private static Writer writer = new Writer();
writer.isTotalSuccess()
是一种非常简单的方法:
public boolean isTotalSuccess() {
if (total == success){
return true;
}
return false;
}