我正在研究Symfony2捆绑包并运行phpunit --coverage-text
。所有测试都没有任何问题,我收到了代码覆盖率报告,但报告不完整,底部有以下信息。
Classes: 4.08% (2/49)
Methods: 1.94% (12/619)
Lines: 1.60% (46/2867)
..
....
zend_mm_heap corrupted
我在PHP 5.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
错误。
你如何摆脱这些问题?
答案 0 :(得分:0)
问题似乎是包含单元测试的文件夹是软件包的一部分,因此包含在代码覆盖率报告中。我不知道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>
答案 1 :(得分:0)
您需要使用
<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>
过滤覆盖率报告的源文件