phpunit Сбросить среду между тестами - PullRequest
6 голосов
/ 01 сентября 2011

У меня есть приложение symfony2, и я использую phpunit.

У меня есть несколько модульных тестов, в которых я использую макеты для макета AppKernel и функциональные тесты, которые делают «реальные» запросы к приложению.При запуске модульных тестов или только функциональных тестов все работает нормально.

Это неприятно, когда я хочу запустить все тесты одновременно.Как только юнит-тесты завершены, phpunit останавливается, говоря:

Fatal error: Cannot redeclare class AppKernel in C:\Users\sebastian\workspace\ppInterface\app\AppKernel.php on line 35

Я не понимаю этого, так как думал, что phpunit будет запускать каждый тест в своей среде.Кажется, это не тот случай.Что я могу сделать, чтобы исправить ситуацию и «сбросить» среду, в которой выполняются тесты?

1 Ответ

13 голосов
/ 01 сентября 2011

PHPUnit не сбрасывает все по умолчанию, хотя это возможно.

Включает - проблема в вашем случае - не сбрасывается (и не может быть в одном процессе).Решением было бы использовать require_once вместо require или использовать изоляцию процесса либо в файле phpunit.xml, либо в тестовом примере (@runTestsInSeparateProcesses), либо в методе тестирования (@runInSeparateProcess).

Вы также можете влиять на то, что сбрасывается между тестами:

  • @backupGlobals
  • @backupStaticAttributes
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...