在 laravel 4.2 项目上运行具有代码覆盖率的 phpunit 时的空目录

Posted

技术标签:

【中文标题】在 laravel 4.2 项目上运行具有代码覆盖率的 phpunit 时的空目录【英文标题】:Empty directory when running phpunit with code coverage on a laravel 4.2 projecct 【发布时间】:2017-12-20 03:33:55 【问题描述】:

我正在尝试设置 phpunit 以显示我的项目的代码覆盖率。我遵循了在谷歌上找到的示例,基本上有以下设置:

composer.json

"require-dev": 
    "phpunit/phpunit": "5.*",
    "phpunit/php-code-coverage": "^4.0.4",
    "mockery/mockery": "^0.9.9"
,

phpunit.xml

<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
     backupStaticAttributes="false"
     bootstrap="bootstrap/autoload.php"
     colors="true"
     convertErrorsToExceptions="true"
     convertNoticesToExceptions="true"
     convertWarningsToExceptions="true"
     processIsolation="false"
     stopOnFailure="false"
     syntaxCheck="false"
>
    <testsuites>
        <testsuite name="Application Test Suite">
            <directory>./app/tests/</directory>
        </testsuite>
    </testsuites>
    <filter>
        <whitelist>
            <directory suffix=".php">app/</directory>
        </whitelist>
    </filter>
    <logging>
        <log type="coverage-html" target="./report/" charset="UTF-8"
             yui="true" highlight="false" 
             lowUpperBound="50" highLowerBound="80"/>
    </logging>
</phpunit>

当我在 homestead 虚拟机上运行所有测试时

vendor/phpunit/phpunit/phpunit

测试运行但没有代码覆盖生成到“报告”目录。它仍然是空的。

我做错了什么?

【问题讨论】:

在 google 上找到 -> 只需链接 that 示例,因为 google 更改了内容并且您没有共享搜索字词(以及国家/地区、IP、android 版本、您的 google 历史记录还有什么不是你的整个文件(生活)在线,这将使谷歌结果显而易见)。除此之外(实际上只是链接它),看起来您没有将 phpunit 运行的输出添加到问题中。 (1/2) 在第一次拍摄时,我猜你没有启用 xdebug 等等。没有给出代码覆盖率。这被输出为“错误”,但未标记为错误(可能是一个太常见的错误,因此不予处理),因此不会生成代码覆盖率报告。通常这就像在 php.ini 中启用 xdebug 一样简单,以便可以收集和报告代码覆盖率信息。 【参考方案1】:

我突然想到在运行时发生了一个致命错误。修复此问题后,生成了代码覆盖率报告。

【讨论】:

以上是关于在 laravel 4.2 项目上运行具有代码覆盖率的 phpunit 时的空目录的主要内容,如果未能解决你的问题,请参考以下文章

在 Laravel 4.2 中覆盖 Mail MailgunTransport 类

从 4.1 升级到 4.2 后 Laravel 控制器路由中断

Laravel 4.2 雄辩的动态查询

Laravel 4.2 - 作曲家更新问题

Laravel 5:PHPUnit 和没有可用的代码覆盖驱动程序

Laravel 升级到 4.2 - 需要 mcrypt 扩展