我在一个大型代码库上运行 JUnit 测试,我意识到有时我会遇到“错误”,而其他时候我会遇到“失败”。有什么不同?
原文由 froadie 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您的测试抛出的异常没有通过 Junit 中的断言框架冒泡,则会将其报告为错误。例如 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
原文由 Neel 发布,翻译遵循 CC BY-SA 3.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
失败 是
when your test cases fail
– 即你的断言是不正确的。错误 是
when unexpected errors/exceptions occur
即在尝试实际运行测试时抛出意外异常,如 FileNotFound 等。