Ответ 1
Короткий ответ: для длительных тестов используйте аннотацию для увеличения допустимого времени выполнения:
@large // 10 seconds
@medium // 5 seconds
@small // 1 second max <-- Default, so no point using
Длинный ответ:
Вот обновленный набор информации, который был получен с помощью @Crozin.
В моем случае ошибка заключалась в том, что тест проходил слишком долго ( > 1 секунда). (Схема Doctrine ORM drop + create может замедлять работу, см. этот ZendCast за то, что я делал). Это вызвало проблему (и некоторую отдачу) от PHP_Invoker. Строгий режим не позволяет выводить.
По чтению/обратному проектированию /usr/share/php/pear/share/pear/PHPUnit/Util/Test.php::getSize() (и getGroups() в одном классе). Я понял, что есть 3 недокументированные аннотации, которые мы можем использовать:
@large // 10 seconds
@medium // 5 seconds
@small // 1 second max run time
Они могут быть указаны на уровне класса или на уровне метода. Проблема № 490 в PHPUnit github указывает на проблемы с поставкой уровня уровня класса и метода, поэтому YMMV, если вы их смешиваете. Как сказал крозин, выделенные тайм-ауты составляют 10,5,1 секунды соответственно.
Альтернативное решение заключалось в том, чтобы увеличить продолжительность выполнения вызываемой функции (на моем медленном компьютере).
sudo vi /usr/share/php/pear/share/pear/PHP/Invoker.php
Increase line 1 "declare(ticks = 1);" to
"declare(ticks = 10);" // or any higher int that meets your needs
Вот куча информации о строгом режиме, который помог мне найти решение:
PHP_Invoker
Класс утилиты для вызова вызываемых вызовов с таймаутом. Этот пакет необходим для обеспечения соблюдения тайм-аутов тестирования в строгом режиме. [Инструкции по установке PHPUnit]Строгий режим Тесты, которые ничего не утверждают, отмечены как неполные Тестирование, которое является неполным (или пропущенным), не дает никакого покрытия кода Slideshare by Sebastian Bergmann (слайд 10)
Примечание
Обратите внимание, что PHPUnit проглатывает весь вывод, который испускается во время выполнения теста. В строгом режиме тест, который испускает выход, не удастся. Тестирование раздела вывода в руководстве PHPUnit