代码之家  ›  专栏  ›  技术社区  ›  Frank Schwieterman

与测试代码相比,单元测试的典型大小

  •  9
  • Frank Schwieterman  · 技术社区  · 14 年前

    我很好奇,当人们在进行TDD时,测试代码与生产代码的比率的合理/典型值是多少。看一个组件,我有530行测试代码,130行生产代码。另一个组件有1000行测试代码,用于360行生产代码。因此,单元测试大约需要3到5倍的代码。这是Javascript代码。我手头上没有太多测试过的C代码,但我认为在另一个项目中,我看到的测试代码是生产代码的2到3倍。

    我知道代码行是一个松散的度量,但是由于我为测试和生产使用了相同的风格(相同的间距格式、相同的注释量等),所以这些值是可比较的。

    5 回复  |  直到 14 年前
        1
  •  4
  •   Pascal Thivent    14 年前
        2
  •  3
  •   Steve Casey    14 年前

    您提到您在单元测试中使用相同的样式。就将测试视为生产代码而言,这是很好的,但是您真的需要为测试代码添加大量注释吗?你是否命名了你的测试方法,以便它们描述了测试所断言的内容?例如,使用'givenxwhenynthenz'函数命名,那么在没有大的注释部分的情况下,测试应该非常清楚。

    你在重构你的测试吗?将任何重复的设置等转移到单独的方法中?

    你是否让你的单元测试保持简单,这样每个测试只断言一件事?

        3
  •  0
  •   Daniel    14 年前

    这些数字听起来很正常。 我写的最长的单元测试超过1500行,它只测试了大约300行代码。

        4
  •  0
  •   ndp    14 年前

    我刚刚看了我最近的三个项目(中型rails),代码测试比分别是1:2.3、1:1.6和1:1.9。。。所以你们的数字听起来很相似。(我刚才跑了 rake stats

    • 如果你做了一个改变,是多个测试失败,还是只有一个失败?如果有大量的测试失败,你可能在反复测试相同的东西,并且可以消除大部分测试。
    • 代码看起来像是复制粘贴的。重构出通用代码。
    • 测试太慢了
        5
  •  0
  •   JeffCharter    10 年前

    我个人使用assert/loc比率。有些东西可能需要更多的模型和设置代码来测试。我觉得测试代码的X行到prod代码的Y行可能不是很有用。代码覆盖工具可能是研究它的最佳方法。我发现在我最近的两个项目中,我的代码每10行生产代码有一个断言。其他人也有类似的价值观吗?