Skip to main content
Logo

Рискованные тесты PHPUnit

September 19, 2018
ru
This is an archived post from thewebland.net. Content may be outdated.

При выполнении тестов PHPUnit может проводить дополнительные проверки, описанные ниже.

 

Бесполезные тесты

PHPUnit по умолчанию строг по отношению к тестам, которые ничего не тестируют. Эта проверка может быть отключена с помощью опции командной строки --dont-report-useless-tests или через установку beStrictAboutTestsThatDoNotTestAnything="false" в конфигурационном XML-файле PHPUnit.

Тест, в котором нет утверждений, будет отмечен как рискованный, если эта проверка включена. Ожидания на поддельных объектах или аннотаций, таких как @expectedException, считаются за утверждение.

 

Непреднамеренно покрытый код

PHPUnit может быть строгим по отношению к непреднамеренно покрытому коду. Эта проверка может быть включена с помощью опции командной строки --strict-coverage или через установку beStrictAboutCoversAnnotation="true" в конфигурационном XML-файле PHPUnit.

Тест с аннотацией @covers, проверяющий код, который не укащан при помощи @covers или @uses, будет отмечен как рискованный, если эта проверка включена.

 

Вывод во время выполнения теста

PHPUnit может быть строгим по отношению к выводу во время выполнения тестов. Эту проверку можно включить с помощью опции командной строки --disallow-test-output или через установку beStrictAboutOutputDuringTests="true" в конфигурационном XML-файле PHPUnit.

Тест, который производит вывод, например, через вызов функции print либо в тестовом коде, либо в тестируемом, будет отмечен как рискованный, если эта проверка включена.

 

Тайм-аут выполнения теста

Для теста может быть применено ограничение времени выполнения, если установлен пакетPHP_Invoker и доступно расширение pcntl. Обеспечение ограничения времени выполнения может включено с помощью опции командной строки--enforce-time-limit``или через установку ``enforceTimeLimit="true" в конфигурационном XML-файле PHPUnit.

Тест с аннотацией @large завершится неудачно, если время его выполнения превысит 60 секунд. Этот тайм-аут настраивается через атрибут timeoutForLargeTests в конфигурационном XML-файле.

Тест с аннотацией @medium завершится неудачно, если время его выполнения займёт больше 10 секунд. Этот тайм-аут настраивается через атрибут timeoutForMediumTests в конфигурационном XML-файле.

Тест с аннотацией @small завершится неудачно, если его выполнение займёт более 1 секунды. Этот тайм-аут настраивается через атрибут timeoutForSmallTests в конфигурационном XML-файле.

Примечание

Тесты должны явно иметь аннотацию либо @small@medium или @large, чтобы сработало ограничение выполнения теста по времени.

 

Манипуляция глобальным состоянием

PHPUnit может быть строгим по отношению к тестам, которые манипулируют глобальным состоянием. Эта проверка может быть включена с помощью опции командной строки --strict-global-state или через настройку beStrictAboutChangesToGlobalState="true" в конфигурационном XML-файле PHPUnit.

https://phpunit.readthedocs.io/ru/latest/risky-tests.html