在JUnit测试的@Before方法中使用assert语句?

时间:2014-05-06 13:47:43

标签: java unit-testing junit annotations

我应该在JUnit测试的assertEquals方法中使用断言语句(@Before,...)吗?

如果断言失败,所有测试都会失败,所以它的行为正是我想要的,但我不相信这是一个好主意,因为@Before - 带注释的方法不是测试。 / p>

2 个答案:

答案 0 :(得分:9)

听起来Assume机制会更合适。

  

一组有用于说明条件假设的方法   其中测试有意义。失败的假设并不意味着   代码被破坏了,但测试没有提供有用的信息。该   默认的JUnit运行器将处理失败假设的测试视为忽略。   自定义跑步者可能表现不同。

这似乎更直观,因为您在实际执行每个测试之前测试了测试前置条件。请注意上面的参考,以不同的方式执行自定义运行程序,并且您可以修改运行器以使其失败,而不是默默地忽略该测试。

答案 1 :(得分:3)

就个人而言,我认为没有任何问题。如果所需的所有测试都失败,则满足一些前提条件,满足要求。我唯一想到的是你应该验证前提条件,而不是测试被测代码。否则它似乎会产生误导,我建议将条件放在每个测试中调用的方法中。