2013-12-17 3 views
-1

Я обновляю сайт laravel 3 до laravel 4 и записываю блок-тесты для него, когда я иду. Это отлично работает, у меня около 300 тестов до сих пор примерно в 20 тестовых случаях, и каждый из них работает отлично в индивидуальном порядке. До недавнего времени они все работали прекрасный пробег вместе, но я, кажется, перешли некий порог, где я не могу запустить какие-либо дополнительные тесты в один присест без следующей ошибки:Тесты Laravel терпят неудачу, если их слишком много

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? Я не уверен, что еще может вызвать такую ​​проблему, которая возникает только тогда, когда все запущены вместе?

Редактировать

не знает, никто, что может быть причиной этого? В настоящее время лучшее, что я могу сделать сейчас, чтобы запустить все тесты следующей Баш скрипт, а затем прокручивать, хотя страницы результата ищет ошибку ...

#!/bin/bash 
for f in app/tests/*Test.php ; do phpunit "$f" ; done 
+0

Вы пытались использовать опцию '--process-isol'? http://phpunit.de/manual/3.7/en/textui.html – SamV

+0

Предполагаю, что я просто выполнил 'phpunit -process-isol'? Я не уверен, что я делаю это неправильно, поскольку каждый отдельный тест терпит неудачу, когда я делаю это так:/'Constant LARAVEL_START уже определено' –

+0

Редактировать' phpunit.xml' в каталоге проекта и установить значение 'true' , – SamV

ответ

2

Предполагая, что это на основе системы * 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 ... специальный.

+0

Спасибо Tasos, это на Mac, но когда я запускаю 'ulimit -n' и' ulimit -Hn', они оба возвращают 'unlimited', так что похоже, что это не проблема, к сожалению? –

+0

Просто, чтобы дважды проверить, вы запускали это как Malk - тот же пользователь, который запускает модульные тесты? –

+0

Я думаю, что нашел что-то еще. MacOSX ... специальный. На моем, (10.6/64bit) 'ulimit -n' говорит 2560, тогда как' launchctl limit maxfiles' говорит 256 | unlimited. Не уверен, какой он подчиняется, но стоит выстрелить. Это действительно действительно похоже на ограничение открытых файлов. Можете ли вы проверить вывод: 'launchctl limit'? Ищите строку maxfiles, если они не являются неограниченными, установите с 'launchctl maxfiles неограниченное неограниченное' (или высокое значение, если оно не позволяет вам это делать) –

Смежные вопросы