在php项目开发过程中,测试时间过长是一个常见的问题,特别是对于功能测试。测试时间长达30分钟,这不仅影响了开发效率,也让每次提交变得异常缓慢。在尝试了多种方法后,我发现了liuggio/fastest这个工具,它大大缩短了我的测试时间,将原本30分钟的测试时间缩减到了7分钟。
liuggio/fastest是一个简单而强大的工具,专门用于并行执行测试。它可以根据计算机的核心数自动创建多个进程,从而并行运行测试,显著提高测试速度。以下是如何使用liuggio/fastest来解决测试时间过长的问题:
使用Composer安装非常简单,只需运行以下命令:
composer require --dev 'liuggio/fastest:^1.6'
liuggio/fastest可以与任何测试工具结合使用,例如PHPUnit或Behat。以下是几种常见的使用方法:
ls -d test/* | ./vendor/liuggio/fastest/fastest "vendor/phpunit/phpunit/phpunit {};"
find tests/ -name "*Test.php" | ./vendor/liuggio/fastest/fastest "vendor/phpunit/phpunit/phpunit {};"
./vendor/liuggio/fastest/fastest -x phpunit.xml.dist "vendor/phpunit/phpunit/phpunit {};"
对于功能测试,liuggio/fastest提供了环境变量,使得每个并行进程可以使用不同的数据库。这对于需要并行运行的测试非常有用。例如:
立即学习“PHP免费学习笔记(深入)”;
echo getenv('ENV_TEST_CHANNEL'); // 当前通道号 echo getenv('ENV_TEST_CHANNEL_READABLE'); // 可读的数据库名称 echo getenv('ENV_TEST_CHANNELS_NUMBER'); // 最大通道数 echo getenv('ENV_TEST_ARGUMENT'); // 当前运行的测试文件 echo getenv('ENV_TEST_INC_NUMBER'); // 当前测试的唯一编号 echo getenv('ENV_TEST_IS_FIRST_ON_CHANNEL'); // 是否是通道上的第一个测试
你还可以使用-b选项在测试前运行脚本,例如初始化数据库 schema 或加载 fixtures:
find tests/ -name "*Test.php" | ./vendor/liuggio/fastest/fastest -b"app/console doc:sch:create -e test" "vendor/phpunit/phpunit/phpunit {};";
liuggio/fastest还支持生成并合并代码覆盖率报告:
# 安装phpcov composer require --dev phpunit/phpcov # 创建覆盖率文件目录 mkdir -p cov/fastest/ # 生成覆盖率文件 find tests/ -name "*Test.php" | vendor/liuggio/fastest/fastest "vendor/phpunit/phpunit/phpunit -c app {} --coverage-php cov/fastest/{n}.cov;" # 合并覆盖率文件 phpcov merge cov/fastest/ --html cov/merge/fastest/
对于基于浏览器的测试(如Selenium或Mink),liuggio/fastest提供了设置环境变量的方法,以便正确选择数据库:
使用liuggio/fastest显著提高了我的PHP项目的测试效率。通过并行执行测试,我将测试时间从30分钟缩短到了7分钟,这极大地提升了开发和迭代的速度。如果你也在为测试时间过长而苦恼,不妨尝试一下liuggio/fastest这个强大的工具。
以上就是如何解决PHP项目测试时间过长的问题?使用liuggio/fastest可以!的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号