我正在开发Symfony2捆绑包,并运行了phpunit --coverage-text
。所有测试都通过了,没有任何问题,我收到了一份代码覆盖率报告,但它是不完整的,底部有以下消息。
Classes: 4.08% (2/49)
Methods: 1.94% (12/619)
Lines: 1.60% (46/2867)
..
....
zend_mm_heap corrupted
我使用的是PHP5.4.11,运行的是PHPUnit和xdebug的最新版本。PHPUnit总是正常运行,除非我要求它进行代码覆盖。这是我的PHPUnit配置文件的相关部分。
<testsuites>
<testsuite name="My Suite">
<directory>./src/Company/*Bundle/Tests</directory>
</testsuite>
</testsuites>
<filter>
<whitelist>
<directory suffix=".php">./src/Company/*Bundle/</directory>
</whitelist>
</filter>
我认为这可能是内存或输出缓冲问题,所以我尝试增加以下ini指令。
output_buffering = 8192
memory_limit = 1028M
这删除了以前的错误,但我开始接收segmentation fault 11
错误。
你是如何解决这些问题的?
问题似乎是包含单元测试的文件夹是捆绑包的一部分,因此包含在代码覆盖率报告中。我不知道PHPUnit中出现问题的具体情况,但如果您的单元测试位于捆绑包中,则需要确保它们是从代码覆盖范围中专门筛选出来的。
这是我新的phpunit.xml配置文件(相关部分)。无zend_mm_heap,无分段故障。
<testsuites>
<testsuite name="My Suite">
<directory>./src/Company/*Bundle/Tests</directory>
</testsuite>
</testsuites>
<filter>
<whitelist>
<directory suffix=".php">./src/Company/*Bundle/</directory>
<exclude>
<directory>./src/*/*Bundle/Tests</directory>
</exclude>
</whitelist>
</filter>
您需要使用
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory suffix=".php">/path/to/files</directory>
<file>/path/to/file</file>
<exclude>
<directory suffix=".php">/path/to/files</directory>
<file>/path/to/file</file>
</exclude>
</whitelist>
</filter>
过滤覆盖率报告的源文件