1

我正在处理 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错误。

你如何摆脱这些问题?

4

2 回答 2

0

问题似乎是包含单元测试的文件夹是 bundle 的一部分,因此包含在代码覆盖率报告中。我不知道 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>
于 2013-02-14T19:37:46.990 回答
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>

过滤覆盖率报告的源文件

于 2013-07-24T02:55:13.660 回答