将公共代码重构为单独的类之后要进行单元测试的内容

时间:2010-07-15 14:51:56

标签: unit-testing

假设我有两个课程,每个课程都经过全面测试。虽然有重复,所以我将公共代码重构为一个新类。我应该对新课程进行单元测试吗?如果是这样,怎么样?

以下是我可以看到的选项:

  1. 不对新类进行单元测试(它已经完全通过原始测试进行测试)
  2. 将原始测试复制+粘贴到新测试类
  3. 将原始测试移至新测试类并使用模拟替换原始测试
  4. 单独保留原始测试,但在新测试类中编写更细粒度的测试

3 个答案:

答案 0 :(得分:2)

  

虽然有重复,所以我将公共代码重构为一个新类。

我认为这意味着两个旧类现在继承了新类的常见行为。如果是这种情况,那么旧的测试用例应该已经测试了常见行为,并且可能不需要编写单独的测试。

如果不是这种情况(就像你正在创建一个实用程序类,其方法由两个原始类调用),那么我可能会将测试移到他们自己的单元测试类中,所以他们只需要在一个地方。

答案 1 :(得分:1)

如果是我,那么我会给新课程一套自己的单元测试。这些测试将是先前测试的复制+粘贴,它们针对相同的代码运行。

虽然你正在复制工作,但从长远来看,你需要考虑这个新类如何改变,并在新的单元测试类/夹具中进行这些测试对你来说更清洁。

答案 2 :(得分:1)

如果您的重构类已被现有测试覆盖,那么您可能没问题。

看看你的选项,我也会做4号。如果你做了一些重构,你可能会做出比以前更通用的东西。在这种情况下,您可以以通用方式测试通用功能。如果您的重构解决方案更通用,我会做4。如果它只是将代码移动到DRY,我可能会做1。