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

2022-09-03 14:48:45

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

如果断言失败,所有测试都将失败,因此它的行为完全符合我的意愿,但我不相信这是一个好主意,因为 -annotated 方法不是测试。@Before


答案 1

听起来假设机制会更合适。

一组方法,用于陈述有关测试有意义的条件的假设。假设失败并不意味着代码已损坏,但测试未提供任何有用的信息。缺省的 JUnit 运行程序将假设失败的测试视为忽略。自定义跑步者的行为可能有所不同。

这似乎更直观,因为在实际执行每个测试之前,您正在测试测试前提条件。请注意上面对不同性能的自定义运行器的引用,您可以将运行器修改为失败,而不是默默地忽略测试。


答案 2

就个人而言,我不认为它有任何问题。如果期望的是所有测试都失败,则不满足某些前提条件,即满足要求。我在这里唯一的想法是,你应该验证前提条件,而不是对被测代码进行测试。否则,它似乎具有误导性,我建议将条件放在从每个测试中调用的方法中。


推荐