Laravel测试如果太多就会失败


Laravel tests fail if there are too many

我正在将laravel3站点升级到laravel4,并在进行单元测试时为其编写单元测试。这非常有效,到目前为止,我在大约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

假设这是在基于*nix的系统上,这听起来很像ulimit问题(打开文件限制)。

分别检查ulimit -nulimit -Hn的输出是否存在软打开文件和硬打开文件限制。如果它是一个小得离谱的东西,比如1024,你可能想把它调高

请参阅:如何更改Linux中打开文件的数量限制?

还要注意,这些限制是针对每个用户的,而不是全局的,因此请确保以运行单元测试的用户身份运行此限制。

编辑:已被勘误表修复。信息的答案如下:https://superuser.com/questions/302754/increase-the-maximum-number-of-open-file-descriptors-in-snow-leopard因为MacOSX…很特别。