我在一个大型代码库上运行 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 许可协议
8 回答6.5k 阅读
4 回答684 阅读✓ 已解决
2 回答3.4k 阅读
3 回答1.9k 阅读✓ 已解决
1 回答2.1k 阅读✓ 已解决
1 回答2.1k 阅读✓ 已解决
1 回答959 阅读✓ 已解决
失败 是
when your test cases fail
– 即你的断言是不正确的。错误 是
when unexpected errors/exceptions occur
即在尝试实际运行测试时抛出意外异常,如 FileNotFound 等。