如果我使用
PHP7.2或
PHP7.1运行我的测试,它们比使用PHP7.0运行它们慢大约3倍.无论如何,要了解为什么会发生这种情况?
即使我单独运行测试套件(功能和单元),我仍然看到减速.只有当我单独运行测试时,速度差才变得无关紧要.
我正在使用Laravel 5.5.20和Laravel Homestead 7.0.1.我有47个相当简单的测试,有些命中数据库,有些只是简单的断言;所以没有什么需要花费很长时间.
我安装了johnkary/phpunit-speedtrap以查看哪些测试时间最长,所以我可以删除那些但是没有特定的测试需要很长时间,因为如果我删除了有问题的测试,下一个将需要很长时间(见下文).
First Run Second Run Test A 0.2 sec Test A 0.2 sec Test B. 0.3 sec Test B. 0.3 sec Test C 0.1 sec Test C 0.1 sec Test D 0.1 sec Test D 0.1 sec Test E 9.3 sec REMOVED Test E Test F 0.3 sec Test F 9.3 sec <-- Test F now takes ages Test G 0.2 sec Test G 0.2 sec
我也在使用内存中的sqlite3数据库,以及Laravel CreatesApplication和RefreshDatabase特性,因为我希望每个测试都能独立运行.
我没有安装或运行Xdebug.有没有已知的PHP7.1和PHP7.2需要很长时间才能运行PHPUnit测试?是否有其他东西我可以安装(甚至用Xdebug运行)来追踪导致问题的确切原因?
建立
Laravel 5.5.20 Laravel Homestead 7.0.1 (Per-project installation) PHPUnit 6.4.4 Vagrant 2.0.1 VirtualBox 5.2.4
结果
PHP 7.2 PHPUnit 6.4.4 Time: 12.4 seconds,Memory: 162.00MB PHP 7.1 PHPUnit 6.4.4 Time: 12.19 seconds,Memory: 162.00MB PHP 7.0 PHPUnit 6.4.4 Time: 4.88 seconds,Memory: 162.00MB
我遇到了与你相同的问题,但安装了XDebug.我在Laracasts上找到了一个名为Roni的用户的相当好的提示(我再也找不到链接,抱歉),它说用PHP命令的-n标志运行测试,如下所示:PHP -n vendor / bin / PHPUnit的.
原文链接:https://www.f2er.com/php/136603.html根据php.net (command line options)的文档,这是用于在没有PHP.ini定义的情况下运行命令.这意味着没有包含扩展名.
-n No PHP.ini file will be used
所以,对我而言,它现在在一分钟内进行测试,而不是在15分钟内进行.问题有点奇怪,因为它始于我的机器上的PHP 7.2,但我团队中的其他人没有问题,尽管安装了xdebug.我想知道这个问题背后到底是什么.