Unit testing 什么';当逻辑发生变化时,更新单元测试的正确方法是什么?

Unit testing 什么';当逻辑发生变化时,更新单元测试的正确方法是什么?,unit-testing,Unit Testing,简单一点:首先,myFunction返回带有两个键的数组('foo'=>1,'bar'=>2),我正在测试它们是否存在 后来业务逻辑发生了变化,myFunction应该只返回一个键array('foo'=>1) 我应该: a) 是否从单元测试中删除第二个键(“条”)的测试? b) 或者直接测试myFunction的返回数组中是否不存在该键 第一个答案似乎更符合逻辑——因为我没有测试任何其他键,比如('blabla','xman')等等。但另一方面,我想确保我的逻辑在任何地方都得到了更新。您应该根

简单一点:首先,myFunction返回带有两个键的数组('foo'=>1,'bar'=>2),我正在测试它们是否存在

后来业务逻辑发生了变化,myFunction应该只返回一个键array('foo'=>1)

我应该: a) 是否从单元测试中删除第二个键(“条”)的测试? b) 或者直接测试myFunction的返回数组中是否不存在该键


第一个答案似乎更符合逻辑——因为我没有测试任何其他键,比如('blabla','xman')等等。但另一方面,我想确保我的逻辑在任何地方都得到了更新。

您应该根据当前的需求进行测试。在您的案例中,它包括重构已经正确完成:D

无论如何:


如果数组应该只返回
foo
,则测试它是否只返回
foo
。如果返回的值超过
foo
或其他值,则测试应失败。如果您有一个密钥列表,则测试所有这些密钥是否有效。测试设置中不能有未定义的键。

根据定义,单元测试意味着以原子方式测试一个功能。您可以使用红色、绿色和重构方法来解决该问题。这描述了TDD方法

,因此,最好的解决方案似乎是测试结果和预期阵列是否相等(所有kesy都相等,并且存在非附加阵列)。谢谢。