4

写测试代码时,有时候需要利用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="abc123">
            <directory suffix="Test.php">./Integrations/abc123</directory>
        </testsuite>
    </testsuites>
    <filter>
        <whitelist>
            <directory suffix=".php">./Integrations/abc123/</directory>
            <directory suffix=".php">../app/Integrations/abc123</directory>
        </whitelist>
    </filter>
    <php>
        <env name="APP_DEBUG" value="true"/>
        <env name="APP_ENV" value="testing"/>
        <env name="APP_KEY" value="abc123"/>
        <env name="APP_URL" value="https://test.lx1036.com"/>
        <env name="CACHE_DRIVER" value="redis"/>
        <env name="DB_DATABASE" value="abc123"/>
        <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/abc123,同时还有xdebug.so的配置路径-d zend_extension=/usr/local/opt/php71-xdebug/xdebug.so,如图:

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

clipboard.png

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

clipboard.png

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

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


lx1036
3.1k 声望923 粉丝

为五斗米折腰