处理单元测试和集成测试之间的重复

时间:2014-11-24 11:04:37

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

我有一个由多个类实现的算法,所有类都由单元测试覆盖。

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

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

我的问题:看起来通过添加这样的集成测试,我使单元测试变得不必要和多余。我不想支持重复的测试逻辑。 我应该删除我的单元测试还是保留原样,例如为了更容易的错误位置?

1 个答案:

答案 0 :(得分:1)

这是测试问题的一部分,这些测试太精细并且与实现紧密结合。

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

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

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

有趣的是,请参阅this article

中单位的定义