【问题标题】:Dealing with duplication between unit and integration tests处理单元测试和集成测试之间的重复
【发布时间】:2014-11-24 11:04:36
【问题描述】:

我有一个由多个类实现的算法,所有类都包含在单元测试中。

我想重构它,这将改变两个类的行为。 当我更改一个类及其测试时,所有单元测试都通过了,尽管在重构完成之前算法会变得不正确。

这个例子说明了单元测试的完整覆盖有时是不够的,我需要在输入输出方面对整个算法进行“集成”测试。理想情况下,此类测试应完全涵盖我的算法的行为。

我的问题:似乎通过添加此类集成测试,我使单元测试变得不必要且多余。我不想支持重复的测试逻辑。 我应该删除我的单元测试还是保持原样,例如更容易定位错误?

【问题讨论】:

    标签: algorithm unit-testing testing integration-testing duplication


    【解决方案1】:

    这是测试粒度太细且与实现紧密耦合的问题的一部分。

    就我个人而言,我会编写专注于算法行为的测试,并将其视为“一个单元”。它被分成几个类的事实是一个实现细节,就像将公共方法的功能分解成几个较小的私有方法也是一个实现细节一样。我不会单独为私有方法编写测试,它们将通过公共方法的功能测试来测试。

    如果其中一些类通常有用并且会在其他地方重用,那么我会考虑在那时为它们编写单元测试,因为它们自己会有一些定义的行为。

    这会导致一些重复,但这没关系,因为这些类现在有一个公共合同要维护(并且由使用它的两个组件使用),这些测试可以定义。

    有趣的是,看this article中Unit的定义

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-13
      • 1970-01-01
      • 2016-04-07
      • 2016-10-03
      • 1970-01-01
      相关资源
      最近更新 更多