为啥 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()