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

时间:2011-08-05 09:37:17

标签: unit-testing

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

后来的业务逻辑发生了变化,myFunction只返回一个键,数组('foo'=> 1)。

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

第一个答案似乎更合乎逻辑 - 因为我没有测试任何其他键,如''blabla','xman')等等。但另一方面,我想确保我的逻辑更新到处都是。

2 个答案:

答案 0 :(得分:1)

您应该根据当前要求进行测试。在您的情况下,它包括重构已正确完成:D

无论如何:

如果您的数组应仅返回foo,则测试它是否仅返回foo。如果它返回的值超过foo或不同,则测试应该失败。如果您有密钥列表,则测试所有这些密钥是否有效。不能在测试设置中定义任何键。

答案 1 :(得分:0)

根据定义,单元测试意味着以原子方式测试一个功能。您可以使用红色,绿色,重构方法来解决该问题。这描述了TDD方法http://techno-fear-killer.blogspot.com/