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

Unit testing 组成单元测试的测试是否应按特定顺序运行?,unit-testing,language-agnostic,testing,tdd,Unit Testing,Language Agnostic,Testing,Tdd,这对于任何进行单元测试的语言都是通用的 大多数单元测试库提供了一种控制单元测试运行顺序的方法。假设我有一个TestClass,它定义了12个测试。是否有充分的理由尝试控制12个测试的运行顺序?请记住,任何启动/关闭代码都已经处理好了,因为大多数库都提供了一种方法来实现这一点。我认为拥有显式测试顺序的优势在于,您可以编写测试,这样每个测试都只使用它直接测试的功能或之前的测试已经测试过的功能。缺点是使订单保持最新的维护成本,并确保其他开发人员理解为什么订单是这样的,并努力维护订单 这不值得努力吗?不

这对于任何进行单元测试的语言都是通用的

大多数单元测试库提供了一种控制单元测试运行顺序的方法。假设我有一个TestClass,它定义了12个测试。是否有充分的理由尝试控制12个测试的运行顺序?请记住,任何启动/关闭代码都已经处理好了,因为大多数库都提供了一种方法来实现这一点。我认为拥有显式测试顺序的优势在于,您可以编写测试,这样每个测试都只使用它直接测试的功能或之前的测试已经测试过的功能。缺点是使订单保持最新的维护成本,并确保其他开发人员理解为什么订单是这样的,并努力维护订单


这不值得努力吗?

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

只要只使用已由另一个测试测试过的功能,就不需要“排序”测试来实现这一点。假设您有一个基本逻辑,并且有一个针对该逻辑的测试(测试a)。在一个新的测试B中测试一个更复杂的逻辑,这个新的测试假设基本逻辑正常工作。如果以后基本逻辑出现问题,测试A将失败,测试B也可能失败。那很好。测试A将为您找出问题并进行修复。测试以什么顺序运行并不重要

我认为拥有显式测试顺序的优势在于,您可以编写测试,这样每个测试都只使用它直接测试的功能或之前的测试已经测试过的功能

我看不出这有什么好处。此外,依赖关系经常在类之间传播,因此尝试按功能依赖关系对测试运行进行排序可能会在多个测试类之间传播,因此在单个测试类中对运行进行排序将无法覆盖它