Я запускаю свои модульные тесты PHP, используя PHPUnit. Если провайдер данных не загружается, вместо сбоя выдается предупреждение.
Вплоть до версии 4 PHPUnit, когда провайдер данных не загружается, в выводе PHPUnit отображается сбой.
Начиная с PHPUnit 5, вместо этого выдается предупреждение. Это проблема при запуске тестов с использованием сценария (например, при непрерывной интеграции), поэтому я не вижу результатов.
Другое отличие заключается в том, что при выполнении кода с PHP 5 по сравнению с PHP 7. При запуске тестов с PHP 5 вместо просмотра вывода PHPUnit я сразу получаю PHP Fatal Error. В PHP 7 он показывает только сбой / предупреждение, когда PHPUnit попадает в неудачный тест. Это наводит меня на мысль, что это как-то связано с обработчиком error_handler, установленным PHPUnit, который может отлавливать ошибку, которую выдает PHP7, но PHP5 нет.
Вот мой PHP-код:
class TestTest extends PHPUnit_Extensions_Database_TestCase
{
/**
* @dataProvider provider_sample
*/
public function test_sample($foo)
{
$this->assertString($foo);
}
public function provider_sample()
{
return [
[ClassName::string] // no such class, this should fail
];
}
public function getDataset()
{
return new ArrayDataSet([]);
}
}
Вот результаты работы PHPUnit 4:
PHPUnit 4.8.36 by Sebastian Bergmann and contributors.
Runtime: PHP 7.2.5
Configuration: /home/some-path/phpunit.xml
Warning: The Xdebug extension is not loaded
No code coverage will be generated.
F
Time: 120 ms, Memory: 14.00MB
There was 1 failure:
1) Warning
The data provider specified for TestTest::test_sample is invalid.
Class 'ClassName' not found
FAILURES!
Tests: 1, Assertions: 0, Failures: 1.
А вот результаты запуска того же кода с PHPUnit 5:
PHPUnit 5.7.21 by Sebastian Bergmann and contributors.
Runtime: PHP 7.2.5
Configuration: /home/some-path/phpunit.xml
Error: No code coverage driver is available
W 1 / 1 (100%)
Time: 99 ms, Memory: 14.00MB
There was 1 warning:
1) Warning
The data provider specified for TestTest::test_sample is invalid.
Class 'ClassName' not found
WARNINGS!
Tests: 1, Assertions: 0, Warnings: 1.
Результаты PHPUnit 4 - это то, чего я ожидаю и чего хочу.
Есть ли способ настроить PHPUnit 5 и выше для того же поведения?