为啥 codecoverage 要我覆盖定义变量?

Posted

技术标签:

【中文标题】为啥 codecoverage 要我覆盖定义变量?【英文标题】:why codecoverage want me to cover define variable?为什么 codecoverage 要我覆盖定义变量? 【发布时间】:2020-11-14 16:28:26 【问题描述】:

晚上好,我正在为 symfony 创建一个包。我为我的方法创建了单元测试,并生成了一个测试覆盖率报告(通过 travis ci 然后发送到 codecov.io)。我还有一部分代码没有被覆盖,即常量(define):

codecov.io

我尝试添加代码覆盖忽略指令或添加 getter 并测试这些 getter 的返回,但结果始终相同。我不明白为什么报告要求我测试原则上不必测试的常量变量。提前感谢您的帮助

【问题讨论】:

【参考方案1】:

@codeCoverageIgnore 可用于类、方法和单个语句。如果要排除块,请使用@codeCoverageIgnoreStart@codeCoverageIgnoreEnd

// @codeCoverageIgnoreStart
define('A', 'B');
define('C', 'D');
// @codeCoverageIgnoreEnd

或者,将每个语句标记为已忽略:

define('A', 'B'); // @codeCoverageIgnore
define('C', 'D'); // @codeCoverageIgnore

代码覆盖率报告不知道您是否必须测试某些内容。它只是报告在运行测试时执行了哪些代码。你应该把它作为找到你错过的地方的指南。仅仅因为某些行是红色的并不意味着您必须对其进行测试。仅仅因为线条是绿色的,并不意味着您已经涵盖了所有相关案例。

【讨论】:

谢谢定义('A', 'B'); // codeCoverageIgnore 是正确的方法。我试过 // codeCoverageIgnoreStart 但它没有用。是的,封面只是一个指南,但由于封面的结果考虑了这个计算,这会扭曲情况......再次感谢您的帮助!

以上是关于为啥 codecoverage 要我覆盖定义变量?的主要内容,如果未能解决你的问题,请参考以下文章

如何让 Sonar 忽略 codeCoverage 指标的某些类?

CodeCoverage 未显示在 Python 项目的 SonarCloud 中

调用未定义的方法 PHP_CodeCoverage_Filter::getInstance()

为啥 IntelliJ 要我改变这个?

为啥 JSLint 要我使用双引号而不是单引号?预期为 '"' 而看到的是 '''

为啥 gcc 要我链接到 libgcc_ext.10.5.dylib?