写 Laravel 测试代码 (六)

写测试代码时,有时候需要利用phpunit来生成测试代码覆盖率报告,方便调试和检查。本文主要聊聊如何在PHPStorm中配置phpunit。

假设phpunit.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
         backupStaticAttributes="false"
         bootstrap="../vendor/autoload.php"
         colors="true"
         convertErrorsToExceptions="true"
         convertNoticesToExceptions="true"
         convertWarningsToExceptions="true"
         processIsolation="false"
         stopOnFailure="false">
    <testsuites>
        <testsuite name="firstclearing">
            <directory suffix="Test.php">./Integrations/FirstClearing</directory>
        </testsuite>
    </testsuites>
    <filter>
        <whitelist>
            <directory suffix=".php">./Integrations/FirstClearing/</directory>
            <directory suffix=".php">../app/Integrations/FirstClearing</directory>
        </whitelist>
    </filter>
    <php>
        <env name="APP_DEBUG" value="true"/>
        <env name="APP_ENV" value="testing"/>
        <env name="APP_KEY" value="XMSJBjsA0J8pDjxraJZo0kbswS6D69Qn"/>
        <env name="APP_URL" value="https://test.rightcapital.com"/>
        <env name="CACHE_DRIVER" value="redis"/>
        <env name="DB_DATABASE" value="rightcapital"/>
        <env name="DB_PASSWORD" value="testing"/>
        <env name="DB_USERNAME" value="testing"/>
        <env name="FILESYSTEM_CLOUD" value="local"/>
        <env name="MAIL_DRIVER" value="log"/>
        <env name="QUEUE_DRIVER" value="sync"/>
        <env name="SESSION_DRIVER" value="extended"/>
        <env name="TEST_AS_OF_DATE" value="2015-01-05"/>
        <env name="TEST_DATA_SET" value="simple"/>
    </php>
</phpunit>

然后点击Run/Debug Configurations按钮,设置phpunit.xml配置文件路径,测试报告存放位置--coverage-html /Applications/MAMP/htdocs/WebService/API/storage/logs/tests/first_clearing,同时还有xdebug.so的配置路径-d zend_extension=/usr/local/opt/php71-xdebug/xdebug.so,如图:

file

记得本地php环境得安装xdebug扩展,但由于composer安装包时有xdebug扩展会减缓速度,可以这么设置避免这个问题:

file

OK,当点击Run按钮运行测试时,会生成测试覆盖率报告:

file

phpunit-firstclearing.xml中配置了whitelist只显示这两个目录./Integrations/FirstClearing/, ../app/Integrations/FirstClearing的测试覆盖率报告。测试报告存放在/Applications/MAMP/htdocs/WebService/API/storage/logs/tests/first_clearing,是html文件,可在浏览器中打开。当然,要生成测试报告,测试运行速度就会大大降低。

OK,有了测试报告可作为调试和检查代码的补充手段,能从整体层面查看代码的质量。为了修改出高质量代码,这个技巧也是必要的。

本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由 Summer 于 6年前 加精
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 3
Summer

图片太满屏啦 :cry:

6年前 评论

@Summer 恩恩,图片放的有点多了。。

6年前 评论

感谢分享。

phpunit-firstclearing.xml 具体是啥,可以看看代码吗?

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!