加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 代码覆盖中的接口和空类

发布时间:2020-12-13 16:59:54 所属栏目:PHP教程 来源:网络整理
导读:我正在使用 PHPUnit 5.2.9,PHP 5.6.19和Xdebug 2.4.0(非RC)以及netbeans IDE. 像任何其他项目一样,我使用接口和奇怪的空扩展类.由于这些文件不包含可执行代码,为什么它们会列在我的代码覆盖率报告中?更重要的是,它们被0/0方法列为0%. (如果100%只是为了看
我正在使用 PHPUnit 5.2.9,PHP 5.6.19和Xdebug 2.4.0(非RC)以及netbeans IDE.

像任何其他项目一样,我使用接口和奇怪的空扩展类.由于这些文件不包含可执行代码,为什么它们会列在我的代码覆盖率报告中?更重要的是,它们被0/0方法列为0%. (如果100%只是为了看到更少的红色,我会很高兴)

我试过在phpunit.xml文件中排除它们:

<whitelist processUncoveredFilesFromWhitelist="false"> // true make no difference
    <directory suffix=".php">./Annotation</directory>
    <directory suffix=".php">./Cache</directory>
    <exclude>
        <directory suffix=".php">./*Interface</directory>
        <directory suffix=".php">./*/*Interface</directory>
    </exclude>
</whitelist>

但看起来globs(*)仅对目录有效.但是,我可以使用< file>标记并单独排除它们.但是,当它们不应该首先包含在内时,要排除很多文件.

我做错了什么还是这种标准行为?

解决方法

您可以尝试改进排除目录,如下所示:

<exclude>
    <directory suffix="Interface.php">.</directory>
</exclude>

另外,您可以直接在忽略代码Blocks of the doc中描述的代码正确标注中进行标记,如下所示:

<?php
/**
 * @codeCoverageIgnore
 */
interface Foo
{
    public function bar();
}

或者您可以在测试用例中标记为覆盖接口类的方法,请参阅更多信息in the doc here.例如:

/**
 * @test
 * @covers Bar::foo
 * @covers BarInterface::foo
 */
  public function foo()
  {
    ....
  }

希望这有帮助

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读