我正在将laravel 3站点升级到laravel 4,并在我去的时候为它编写单元测试。这工作得很好,到目前为止,我在大约20个测试用例中进行了大约300次测试,并且每个测试都可以单独运行。直到最近他们一起工作得很好,但我似乎已经越过了一些门槛,我不能一次性运行任何更多的测试,没有以下错误:
PHP Fatal error: Illuminate\Filesystem\Filesystem::getRequire(): Failed opening required '/Users/Me/Desktop/Repos/API-2/app/config/api.php' (include_path='.:/Applications/MAMP/bin/php/php5.4.4/lib/php') in /Users/Me/Desktop/Repos/API-2/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php on line 53
几乎每次测试都会使用未包含的配置文件,并且由于所有测试用例在单独运行时都能正常工作,我无法理解为什么只有当它们全部一起运行时才会发生此错误。
这个错误显示测试接近完成时,所以我的第一个虽然是内存或执行时间限制,我已经尝试在php.ini中加倍,但我认为它们不适用于CLI吗?我不确定还有什么可能导致像这样的问题,只有在一起运行时才会发生?
修改
没有人知道造成这种情况的原因是什么? 目前,我现在可以做的最好的运行所有测试的是以下bash脚本,然后滚动查看结果页面寻找错误......
#!/bin/bash
for f in app/tests/*Test.php ; do phpunit "$f" ; done
答案 0 :(得分:3)
假设这是基于* nix的系统,这听起来很像ulimit问题(打开文件限制)。
分别检查ulimit -n
和ulimit -Hn
的输出是否有软打开和硬打开文件限制。如果它是一个非常小的东西,比如1024,你可能想要它。
请参阅:How do I change the number of open files limit in Linux?
还要注意这些限制是按用户,而不是全局限制,因此请确保以运行单元测试的用户身份运行此限制。
编辑:修正了errant.info的回答:https://superuser.com/questions/302754/increase-the-maximum-number-of-open-file-descriptors-in-snow-leopard因为MacOSX很特别。