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

新手上路,请多包涵

我在一个大型代码库上运行 JUnit 测试,我意识到有时我会遇到“错误”,而其他时候我会遇到“失败”。有什么不同?

原文由 froadie 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 450
2 个回答

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

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

原文由 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 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题