如何通过 Netbeans / PHPStorm / PHPUnit 集成从代码覆盖率中排除文件/代码块

发布于 2024-09-08 17:58:13 字数 178 浏览 11 评论 0原文

要求:

  • 带有 PHPUnit(6.9) 的 Netbeans
  • 编辑: 例如,同样适用于 PHPStorm

如何:

  • 从代码覆盖率中排除行。
  • 从代码覆盖率中排除代码块(行)。

Requirements:

  • Netbeans with PHPUnit(6.9)
  • EDIT: Same applies, for example, to PHPStorm

How to:

  • Exclude lines from code coverage.
  • Exclude code blocks (lines) from code coverage.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

む无字情书 2024-09-15 17:58:13

忽略方法代码块:

/**
 * @codeCoverageIgnore
 */
function functionToBeIgnored() {
    // function implementation
}

忽略类代码块:

/**
 * @codeCoverageIgnore
 */
class Foo {
    // class implementation
}

正如 @david-harkness 所说,忽略单独的行:

// @codeCoverageIgnoreStart
print 'this line ignored for code coverage';
// @codeCoverageIgnoreEnd

更多信息可以在 忽略代码块标题下的 PHPUnit 文档

To ignore method code blocks:

/**
 * @codeCoverageIgnore
 */
function functionToBeIgnored() {
    // function implementation
}

To ignore class code blocks:

/**
 * @codeCoverageIgnore
 */
class Foo {
    // class implementation
}

And as @david-harkness said, to ignore individual lines:

// @codeCoverageIgnoreStart
print 'this line ignored for code coverage';
// @codeCoverageIgnoreEnd

More information can by found in the PHPUnit Documentation under the Ignoring code blocks heading.

¢蛋碎的人ぎ生 2024-09-15 17:58:13

如果您试图实现 100% 的代码覆盖率,但有一行或多行无法测试,则可以使用特殊注释将它们包围起来。它们将在代码覆盖率报告中被忽略。

if (($result = file_get_contents($url)) === false) {
    // @codeCoverageIgnoreStart
    $this->handleError($url);
    // @codeCoverageIgnoreEnd
}

编辑:我发现Xdebug经常认为右大括号是可执行的。 :( 如果发生这种情况,请将结束标记移到其下方。

If you are trying to achieve 100% code coverage but have one or more lines that you cannot test, you can surround them with special annotations. They will be ignored in the code coverage report.

if (($result = file_get_contents($url)) === false) {
    // @codeCoverageIgnoreStart
    $this->handleError($url);
    // @codeCoverageIgnoreEnd
}

Edit: I have found that Xdebug often considers the closing brace to be executable. :( If that happens, move the end tag below it.

挖个坑埋了你 2024-09-15 17:58:13

首先确保您拥有最新和最好的 phpunit,否则代码忽略可能会丢失。接下来创建一个 phpunit.xml 文件,如下所示:

<phpunit colors="true">
    <filter>
        <blacklist>
            <file>file1.php</file>
            <file>file2.php</file>
        </blacklist>
    </filter>
</phpunit>

First make sure you have the latest and greatest phpunit or else the code ignore might be missing. Next create a phpunit.xml file that looks something like this:

<phpunit colors="true">
    <filter>
        <blacklist>
            <file>file1.php</file>
            <file>file2.php</file>
        </blacklist>
    </filter>
</phpunit>
萌化 2024-09-15 17:58:13

PHP 单元 9.6,

如果您只想忽略一行:

public function buildTotalLssPrice(float $discount) : float
{
    switch ($this->getProductType()) {
        case ProductLicenseOption::ORDER_TYPE_LSS_ORDER_FORM_PRODUCT_IFS:
            return $this->buildTotalLssIfsPrice($discount);
        default:
            throw new Exception(sprintf("Not defined '%s'", $this->getProductType())); // @codeCoverageIgnore
    }
}

PHP unit 9.6,

If you want to ignore only one line :

public function buildTotalLssPrice(float $discount) : float
{
    switch ($this->getProductType()) {
        case ProductLicenseOption::ORDER_TYPE_LSS_ORDER_FORM_PRODUCT_IFS:
            return $this->buildTotalLssIfsPrice($discount);
        default:
            throw new Exception(sprintf("Not defined '%s'", $this->getProductType())); // @codeCoverageIgnore
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文