Pha*_*Pha 5 php phpunit code-coverage symfony
我在一些项目中使用 symfony 3.4。根据文档,我们应该为我们的控制器编写功能测试。然而,我们似乎无法收集功能测试的代码覆盖率,因为 symfony 将在另一个 PHP 进程中运行主代码。
var_dump(xdebug_code_coverage_started()) => truevar_dump(xdebug_code_coverage_started()) =>
false.更新:似乎只有当我将测试放在单独的文件夹中时才会出现该问题src。当我将测试放在同一个包文件夹中时它可以工作(src/MyBubndle/Tests)
PHP 单元配置
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/6.0/phpunit.xsd"
backupGlobals="false"
colors="true"
processIsolation = "false"
bootstrap="vendor/autoload.php"
>
<php>
<ini name="error_reporting" value="-1" />
<server name="KERNEL_DIR" value="app/" />
<env name="SYMFONY_DEPRECATIONS_HELPER" value="weak"/>
<!--<env name="KERNEL_CLASS" value="App\Kernel" />-->
<env name="APP_ENV" value="test"/>
<env name="APP_DEBUG" value="1"/>
<env name="SYMFONY_ENV" value="test"/>
<env name="MYSQL_SERVER" value="127.0.0.1"/>
<env name="MYSQL_DATABASE" value="db"/>
<env name="MYSQL_USER" value="root"/>
<env name="MYSQL_PASSWORD" value="root"/>
<env name="MYSQL_PORT" value="3306"/>
<env name="JWT_PUBLIC_KEY_PATH" value="jwt/public.pem"/>
<env name="SYMFONY_PHPUNIT_VERSION" value="6.5.5"/>
</php>
<testsuites>
<testsuite name="Project Test Suite">
<directory suffix="Test.php" >.</directory>
<exclude>vendor</exclude>
</testsuite>
</testsuites>
<filter>
<whitelist>
<directory suffix=".php">.</directory>
<exclude>
<directory>src/*Bundle/Resources</directory>
<directory>src/*/*Bundle/Resources</directory>
<directory>src/*/Bundle/*Bundle/Resources</directory>
<directory>app</directory>
<directory>bin</directory>
<directory>docker</directory>
<directory>jwt</directory>
<directory>var</directory>
<directory>vendor</directory>
<directory>web</directory>
<directory>tests</directory>
</exclude>
</whitelist>
</filter>
<logging>
<log type="coverage-html" target="./var/logs/codeCoverage" charset="UTF-8"
yui="true" highlight="true"
lowUpperBound="50" highLowerBound="80"/>
<log type="coverage-text" target="php://stdout" showOnlySummary = "true" showUncoveredFiles="false"/>
<log type="testdox-html" target="./var/logs/testdox.html" />
<log type="junit" target="./var/logs/testreport.xml" logIncompleteSkipped="false"/>
<log type="coverage-clover" target="./var/logs/coverage.xml"/>
</logging>
<!--<listeners>-->
<!--<listener class="Symfony\Bridge\PhpUnit\CoverageListener" />-->
<!--</listeners>-->
</phpunit>
Run Code Online (Sandbox Code Playgroud)
还尝试过:
<?xml version="1.0" encoding="UTF-8"?>
<!-- https://phpunit.de/manual/current/en/appendixes.configuration.html -->
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/6.0/phpunit.xsd"
backupGlobals="false"
colors="true"
processIsolation = "false"
bootstrap="vendor/autoload.php"
>
<php>
<ini name="error_reporting" value="-1" />
<server name="KERNEL_DIR" value="app/" />
<env name="SYMFONY_DEPRECATIONS_HELPER" value="weak"/>
<!--<env name="KERNEL_CLASS" value="App\Kernel" />-->
<env name="APP_ENV" value="test"/>
<env name="APP_DEBUG" value="1"/>
<env name="SYMFONY_ENV" value="test"/>
<env name="MYSQL_SERVER" value="127.0.0.1"/>
<env name="MYSQL_DATABASE" value="db"/>
<env name="MYSQL_USER" value="root"/>
<env name="MYSQL_PASSWORD" value="root"/>
<env name="MYSQL_PORT" value="3306"/>
<env name="JWT_PUBLIC_KEY_PATH" value="jwt/public.pem"/>
<env name="SYMFONY_PHPUNIT_VERSION" value="6.5.5"/>
</php>
<testsuites>
<testsuite name="Project Test Suite">
<directory suffix="Test.php" >./tests</directory>
</testsuite>
</testsuites>
<filter>
<whitelist>
<directory suffix=".php">./src</directory>
<exclude>
<directory>src/*Bundle/Resources</directory>
<directory>src/*/*Bundle/Resources</directory>
<directory>src/*/Bundle/*Bundle/Resources</directory>
</exclude>
</whitelist>
</filter>
<logging>
<log type="coverage-html" target="./var/logs/codeCoverage" charset="UTF-8"
yui="true" highlight="true"
lowUpperBound="50" highLowerBound="80"/>
<log type="coverage-text" target="php://stdout" showOnlySummary = "true" showUncoveredFiles="false"/>
<log type="testdox-html" target="./var/logs/testdox.html" />
<log type="junit" target="./var/logs/testreport.xml" logIncompleteSkipped="false"/>
<log type="coverage-clover" target="./var/logs/coverage.xml"/>
</logging>
<!--<listeners>-->
<!--<listener class="Symfony\Bridge\PhpUnit\CoverageListener" />-->
<!--</listeners>-->
</phpunit>
Run Code Online (Sandbox Code Playgroud)
在不使用其他测试框架的情况下,是否有任何解决方法?
非常感谢所有帮助!
| 归档时间: |
|
| 查看次数: |
869 次 |
| 最近记录: |