我今天看到了使用JUnit编写单元测试的非标准方法,
而不是使用框架检查
Assert.assertTrue("Unexpected response encoding", text.length() >= 1);
抛出一般异常
if (text.length() < 1) {
throw new Exception("Unexpected response encoding");
}
我想说服作者采用第一种风格。除了详细的理由,意图的明确性你知道这些方法还有什么不同之处吗?
答案 0 :(得分:3)
JUnit报告将第一个样式显示为“失败”,而第二个样式显示为“错误”,因为抛出了未捕获的异常。
这取决于你是否关心这种类型的标签并且是完全主观的,但我个人更愿意将其视为“失败”。
答案 1 :(得分:1)
他们在报告中的处理方式有两种不同:
Assert.assertEquals
,如果失败,它会在报告中同时报告expected
和found
值以及消息。答案 2 :(得分:0)
如果您的主要目标是说服某人使用第一种方法,而您需要更多弹药(我同意Jon Skeet的评论,您不需要更多弹药。)然后在测试中使用一些代码覆盖工具代码。
优秀的开发人员将毫不费力地获得100%的单元测试覆盖率。如果不进入if
条件,糟糕的开发人员将无法获得100%的覆盖率。无论哪种方式,你都可以唠叨糟糕的开发者。为什么你的保险不是100%?或者为什么你的单元测试失败?
这不公平,但会激发理想的行为。