构成单元测试的测试是否应按特定顺序运行?

时间:2010-12-04 18:21:49

标签: unit-testing language-agnostic testing tdd

这对于完成单元测试的任何语言都是通用的。

大多数单元测试库提供了一种控制单元测试运行顺序的方法。假设我有一个定义十二个测试的TestClass。是否有充分的理由尝试控制十二次测试的顺序?请记住,任何启动/关闭代码都已经处理好了,因为大多数库提供了一种方法。我看到有一个明确的测试顺序的优点是你可以组成你的测试,所以每个测试只使用它直接测试或已经过先前测试测试的功能。缺点是维持订单最新的维护成本,并确保其他开发人员了解订单的原因并保留订单。

这不值得吗?

2 个答案:

答案 0 :(得分:5)

这不值得努力。更重要的是,这不是一个好习惯。每个单元测试应独立于其他测试运行。如果你的一个测试依赖于另一个测试,那么这不是一个好的测试。

只使用已经通过其他测试测试的功能,您无需“订购”测试即可实现此目的。假设您有一个基本逻辑,并且对该逻辑进行了测试(测试A)。您在新的测试B中测试了一个更复杂的逻辑,这个新测试假定基本逻辑正在工作。如果以后出现基本逻辑错误,测试A将失败,测试B也可能失败。那样就好。测试A将查明您修复它的问题。测试运行的顺序无关紧要。

答案 1 :(得分:1)

  

我看到有一个明确的测试订单的优点是你可以编写你的测试,所以每个测试只使用它直接测试或已经过先前测试测试的功能。

我在这里看不到多少优势。此外,依赖性经常在各个类之间传播,因此尝试按功能依赖性对测试运行进行排序可能会分布在多个测试类中,因此在单个测试类中对运行进行排序不会覆盖它。