JUnit 中的失败和错误有什么区别?

2022-08-31 10:28:26

我在大型代码库上运行JUnit测试,并且我意识到有时我会收到“错误”,而其他时候我会得到“失败”。有什么区别?


答案 1

失败是 - 即你的断言是不正确的。when your test cases fail

错误是 - 即在尝试实际运行测试时,会抛出意外的异常,例如FileNotFound等。when unexpected errors/exceptions occur


答案 2

如果您的测试引发的异常没有通过 Junit 中的 Assertion 框架冒泡,则会将其报告为错误。例如,NullPointer 或 ClassNotFound 异常将报告错误:

String s = null;
s.trim();

try {

    // your code
} catch(Exception e) {
    // log the exception
    throw new MyException(e);
}

话虽如此,以下内容将报告失败:

Assert.fail("Failure here");

Assert.assertEquals(1, 2);

甚至:

throw new AssertionException(e);

这取决于您使用的 Junit 版本。Junit 4-将区分故障和错误,但 Junit 4 仅将其简化为故障。

以下链接提供了更多有趣的输入:

http://www.devx.com/Java/Article/31983/1763/page/2