繁体   English   中英

Laravel代码覆盖非常慢

[英]Laravel code coverage very slow

我正在一个laravel项目中,该项目具有8000多行代码和550个单元测试,覆盖率约为75%。 运行代码覆盖率报告需要35分钟,因此无法与持续集成环境进行集成。 phpunit花这么长时间为如此大小的项目生成覆盖率报告是正常的吗? 有人知道有什么方法可以提高运行覆盖率报告的速度吗? 我看了这个问题和这篇文章 ,都没有证明是有用的。 增加php脚本的最大内存限制也没有任何效果。

我的环境是:OSX 10.9.5,xDebug 2.2.7,PHP 5.6.5,PHPUnit 4.1.6

您可以使用phpunit.xml一些配置过滤将包含在覆盖率报告中的phpunit.xml 例如,您不需要介绍框架或其他第三方依赖项。

您可以包括将要覆盖的文件(列入白名单),也可以将不想要的文件排除(列入黑名单)。

开始仅包含一些文件,以查看是否有所作为。

PHPUnit文档复制:

<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>

当PHPUnit似乎花费很长时间时,我通常发现问题是它试图对太多的代码进行覆盖。 如果完成了,您可能会发现您也在供应商目录中的所有库上都获得了编号。

在phpunit.xml文件中,我倾向于使用完整的过滤器,以确保几乎只运行我的主要源代码(在类中),并收集了代码范围。 这是一个具有嵌入式资源的基于Symfony2的项目的资源。

<?xml version="1.0" encoding="UTF-8"?>
<phpunit
<filter>
    <blacklist>
        <directory>./vendor/</directory>
        <!-- and other directories,  -->
    </blacklist>

    <whitelist>
        <directory>./app</directory>
        <directory>./src</directory>
        <exclude>
            <directory>./app/cache/</directory>
            <directory>./src/*/*Bundle/Resources</directory>
            <directory>./src/*/*Bundle/Tests</directory>
            <directory>./vendor/</directory>
        </exclude>
    </whitelist>
</filter>

在某种程度上,使用此设置针对125个src /文件和8800条非注释代码行,我花了大约40秒钟的时间来运行我的160个测试的子集-440个断言,并生成HTML输出。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM