【问题标题】:What's the right approach for updating unit tests, when logic has changed?当逻辑发生变化时,更新单元测试的正确方法是什么?
【发布时间】:2011-08-05 23:53:19
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: unit-testing


    【解决方案1】:

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

    无论如何:

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

    【讨论】:

    • 所以似乎最好的解决方案是测试结果和预期数组是否相等(所有 kesy 都相等,并且没有额外的)。谢谢。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2017-02-23
      • 1970-01-01
      • 2017-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多