如果方法在同一行上执行,为什么这个JUnit断言会失败?

时间:2015-06-01 13:58:58

标签: java junit junit4

我有一个简单的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;
}

0 个答案:

没有答案