Строгий режим PHPUnit – как изменить тайм-аут по умолчанию

Я бы хотел, чтобы мои модульные тесты выполнялись в строгом режиме, чтобы я мог легко узнать о каких-либо исключительно длинных тестах, но в то же время по умолчанию 1-го времени недостаточно. Могу ли я изменить его для всех тестов? Я знаю, что могу установить тайм-аут для каждого класса (и отдельных тестов) с помощью @short / @medium / @long аннотаций, но есть ли что-то подобное для всех тестов? Возможно, в phpunit.xml?

Это необходимо для исключения PHP_Invoker_TimeoutException: Execution aborted after 1 second которое происходит раз в то время.

Этот параметр можно включить, установив время раз в phpunit.xml. Время находится в секундах.

Пример:

 <phpunit strict="true" timeoutForSmallTests="1" timeoutForMediumTests="5" timeoutForLargeTests="10" > // test suites </phpunit> 

Тесты могут быть отмечены как средние или большие, путем маркировки фактических функций тестирования, например, следующих

 /** * @medium */ public function testTestThing() { $this->assertTrue(false); } 

EDIT: современные версии PHPUnit больше не выполняют этих тайм-аутов, а также изменяют поведение строгого режима в целом путем введения отдельных флагов для каждой вещи, ранее описанной в строгом режиме :

 beStrictAboutTestsThatDoNotTestAnything="true" checkForUnintentionallyCoveredCode="true" beStrictAboutOutputDuringTests="true" beStrictAboutTestSize="true" beStrictAboutChangesToGlobalState="true" 

Несвязанное предупреждение: оно также изменяет пути к испытаниям в конфигурации XML относительно файла конфигурации XML, в отличие от старого по умолчанию, что пути должны относиться к текущему рабочему директорию.

Кроме того, вы можете установить их также в методе setUp () следующим образом:

 $this->getTestResultObject()->setTimeoutForSmallTests(1); $this->getTestResultObject()->setTimeoutForMediumTests(5); $this->getTestResultObject()->setTimeoutForLargeTests(10);