Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 处理单元测试和集成测试之间的重复_Algorithm_Unit Testing_Testing_Integration Testing_Duplication - Fatal编程技术网

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

Algorithm 处理单元测试和集成测试之间的重复,algorithm,unit-testing,testing,integration-testing,duplication,Algorithm,Unit Testing,Testing,Integration Testing,Duplication,我有一个由许多类实现的算法,这些类都包含在单元测试中 我想重构它,这将改变两个类的行为。 当我更改一个类及其测试时,所有单元测试都通过,尽管在重构完成之前,算法变得不正确 这个例子说明,单元测试的完全覆盖有时是不够的,我需要对整个算法在输入输出方面进行“集成”测试。理想情况下,这样的测试应该完全覆盖我的算法的行为 我的问题是:通过添加这样的集成测试,我使单元测试变得不必要和多余。我不想支持重复的测试逻辑。 我应该删除单元测试还是保持原样,例如,为了更容易地定位bug?这是粒度太细且与实现紧密耦合

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

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

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

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

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

我个人将编写测试,着重于算法的行为,并将其视为“单元”。它被分解成几个类这一事实是一个实现细节,正如将公共方法的功能分解成几个较小的私有方法也是一个实现细节一样。我不会单独为私有方法编写测试,它们将由公共方法的功能测试来测试

如果这些类中的一些类是通用的,将在别处重用,那么我会考虑在那时为它们编写单元测试,这样它们就有了自己定义的行为。

这将导致一些重复,但这是可以的,因为这些类现在有一个公共契约要维护(并且由使用它的两个组件使用),这些测试可以定义公共契约

有趣的是,请参见中的“单位”定义