在JUnit中断言解决方法

时间:2012-10-11 15:20:05

标签: java junit

我今天看到了使用JUnit编写单元测试的非标准方法,

而不是使用框架检查

Assert.assertTrue("Unexpected response encoding", text.length() >= 1);

抛出一般异常

if (text.length() < 1) {
    throw new Exception("Unexpected response encoding");
}

我想说服作者采用第一种风格。除了详细的理由,意图的明确性你知道这些方法还有什么不同之处吗?

3 个答案:

答案 0 :(得分:3)

JUnit报告将第一个样式显示为“失败”,而第二个样式显示为“错误”,因为抛出了未捕获的异常。

这取决于你是否关心这种类型的标签并且是完全主观的,但我个人更愿意将其视为“失败”。

答案 1 :(得分:1)

他们在报告中的处理方式有两种不同:

  1. 正如@Matt所说,一个是失败而另一个是错误。
  2. Imagene Assert.assertEquals,如果失败,它会在报告中同时报告expectedfound值以及消息。

答案 2 :(得分:0)

如果您的主要目标是说服某人使用第一种方法,而您需要更多弹药(我同意Jon Skeet的评论,您不需要更多弹药。)然后在测试中使用一些代码覆盖工具代码。

优秀的开发人员将毫不费力地获得100%的单元测试覆盖率。如果不进入if条件,糟糕的开发人员将无法获得100%的覆盖率。无论哪种方式,你都可以唠叨糟糕的开发者。为什么你的保险不是100%?或者为什么你的单元测试失败?

这不公平,但会激发理想的行为。