起初我虽然是一样的,但在 eclemma 看来它似乎不同。但我找不到任何关于它的信息。
代码覆盖率和测试覆盖率有什么区别?
这是我使用这些术语的方式。 代码覆盖率是对响应刺激(例如运行测试)执行了多少代码的度量。 测试覆盖率是对测试结果执行了多少功能集的度量。
其他人会有其他定义。当有人使用这些术语时,如果您不确定它们的含义,请询问他们。
作为通用术语的测试覆盖率和代码覆盖率可能意味着对所涵盖内容的各种不同度量:代码行、布尔表达式的子条件、对数据的访问、对 API 函数的调用……
用普通话来说,对于你能得到的几乎所有工具,“测试覆盖率”和“代码覆盖率”告诉你什么代码被你使用的任何测试过程执行(无论是单元测试、功能测试、非正式测试、交互式测试) , ...)。
唯一广泛使用的变体是 MC/DC(测试/代码)覆盖率,它告诉您逻辑表达式中的哪些布尔子条件已以控制布尔表达式结果的方式执行。只有少数工具提供此功能。
我确信 eclemma 提供标准类型的测试/代码覆盖率。它是否提供其他任何东西......我不知道。
以下是我使用这些术语的方式(尽管我几乎从未真正使用过这些术语)。
代码覆盖率是测试期间执行了多少代码的度量。
测试覆盖率是测试期间执行了多少测试用例的度量。
你的旅费可能会改变...
由于上述反应,定义各不相同。我有时会说代码覆盖率对我来说并不重要,但测试覆盖率确实如此。
通过测试覆盖率,我的意思是在这种情况下,一个类的任何可能的行为都应该由测试记录(即,如果你查看测试,你应该能够对该类的任何方法的输出和行为做出安全的假设,提供任何给定的输入集。其中还包括无效输入的假设。
不影响行为的代码行显然是不可取的,但如果它们存在,则通常不太相关。对我而言,此类行的典型示例是实际上很少使用的小型最佳实践方法,因此我可能不会测试是否在写入文件时捕获异常,并且在尝试写入之前检查它是否存在。经常进行这种检查总比不编写或测试这种代码要好。