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

Use an assert statement in the @Before method of a JUnit test?

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

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


听起来假设机制更合适。

A set of methods useful for stating assumptions about the conditions
in which a test is meaningful. A failed assumption does not mean the
code is broken, but that the test provides no useful information. The
default JUnit runner treats tests with failing assumptions as ignored.
Custom runners may behave differently.

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


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