我在我的Codeception单元测试中使用PHPUnit。我对代码覆盖不感兴趣,所以我想完全禁用它,特别是因为它将我的测试延迟了8..12秒。当测试配置为在文件更改时自动运行时,这会变得很烦人。
我调试了PHPUnit代码,看看为什么它启动这么久,发现它在getCodeCoverageFilter
内循环getBlacklistedDirectories
并收集调用addDirectoryToBlacklist
的文件名时花费最多12秒。< / p>
有没有办法在Codeception或PHPUnit中禁用处理getCodeCoverageFilter
而不直接破解其代码?
这是我目前在Laravel 5项目根目录下的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>./tests/</directory>
</testsuite>
</testsuites>
<filter>
<blacklist>
<directory>./vendor/</directory>
<directory>./database/</directory>
<directory>./public/</directory>
<directory>./resources/</directory>
<directory>./storage/</directory>
<directory>./tests/</directory>
</blacklist>
<whitelist>
<directory suffix=".php">app/</directory>
</whitelist>
</filter>
<php>
<env name="APP_ENV" value="testing"/>
<env name="CACHE_DRIVER" value="array"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="QUEUE_DRIVER" value="sync"/>
</php>
</phpunit>
答案 0 :(得分:1)
只需删除
行即可<log type="coverage-html" target="coverage"/>
来自phpunit.xml
的
实际上,我使用了两个xml文件。
在远程代码检查服务上使用的一个标准phpunit.xml
,以及我在没有代码覆盖的情况下专门命名为phpunit_no_code_coverage.xml
的标准,我在开发时使用本地。
您可以通过phpunit的c
标志指定要使用的xml文件,例如:
./phpunit -c tests/phpunit_no_code_coverage.xml --testsuite suite_name
结果相当巨大,我的测试套件现在运行得相当快,平均需要大约15秒,而之前需要110秒。
答案 1 :(得分:0)