代码之家  ›  专栏  ›  技术社区  ›  Brad Cupit Regan

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

  •  0
  • Brad Cupit Regan  · 技术社区  · 14 年前

    假设我有两门课,每门课都经过了充分的测试。但是有重复,所以我将公共代码重构为一个新类。我应该单元测试那门新课吗?如果是这样,怎么办?

    我可以看到以下选项:

    1. 不要对新类进行单元测试(它已经通过原始测试进行了完全测试)
    2. 复制并粘贴原始测试到新的测试类
    3. 将原始测试移动到新的测试类,并用模拟替换原始测试
    4. 只保留原始测试,但在新的测试类中编写更多的细粒度测试
    3 回复  |  直到 13 年前
        1
  •  1
  •   hvgotcodes    14 年前

    如果重构类包含在现有测试中,那么您可能还可以。

    看看你的选择,我也会选4号。如果您进行了一些重构,您可能会使一些东西比以前更通用。在这种情况下,您可以用通用的方式测试通用的功能。因此,如果重构的解决方案更通用,我将执行4个操作。如果只是移动代码使其变干,我可能会做1。

        2
  •  2
  •   Bill the Lizard    14 年前

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

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

    如果不是这样的话(比如你创建了一个实用类,它的方法由两个原始类调用),那么我可能会将测试移动到它们自己的单元测试类,这样它们只需要在一个地方。

        3
  •  1
  •   Tim Cooper    13 年前

    如果是我,那么我会给新的类一组单元测试。这些测试将是以前针对相同代码运行的测试的复制+粘贴。

    尽管您正在复制工作,但从长远来看,您需要考虑这个新类可能会发生什么变化,并且在新的单元测试类/夹具中进行这些测试对您来说会更干净。