Как выполнить unittest ядра symfony2

#php #phpunit #symfony

#php #phpunit #symfony

Вопрос:

После новой установки symfony2 я могу запустить phpunit -c app/ и phpunit протестирует прилагаемое демонстрационное приложение: OK (1 test, 1 assertion) .

Но я не получаю никаких выходных данных (даже с подробностями) при запуске, phpunit -c vendor/symfony/ как описано здесь: http://symfony.com/doc/2.0/contributing/code/tests.html .

Кто-нибудь знает, как заставить это работать?

  • PHPUnit: 3.6.2
  • PHP: 5.3.8
  • Symfony: 2.0.5

Тестирование twig, doctrine и других плагинов работает как ожидалось (хотя тесты doctrine по какой-то причине завершаются неудачей).

Комментарии:

1. Вы проверили исходный код symfony? Для symfony 1.x они включают в себя целую библиотеку тестов в каталоге /test.

2. У меня есть 2 каталога в vendor / symfony / tests /Symfony/ Tests: Bridge и Component. Оба содержат множество тестовых примеров («расширяет PHPUnit_Framework_TestCase»).

3. Запуск phpunit в / app может не сработать, поскольку вам придется настраивать собственные модульные тесты. У symfony нет возможности узнать, как вы собираетесь создавать свои приложения. Но он должен, по крайней мере, запускать модульные тесты для основного кода.

Ответ №1:

Если у вас нет выходных данных, возможно, это потому, что вы настроили php так, чтобы он не отображал ошибки.

Вы должны установить поставщиков, используя vendors.php скрипт, прежде чем запускать набор тестов Symfony:

 $ php vendor/symfony/vendors.php
  

Комментарии:

1. Спасибо! Я думал, что уже установил их, выполнив php bin/vendors install

2. Что ж, это правильный ответ. К сожалению, мне не разрешено голосовать за это (недостаточно репутации). Что меня поражает, так это тот факт, что тесты symfony2 прерываются примерно на 66% без какого-либо уведомления. :/ Я собираюсь зайти на форумы symfony и спросить, что с этим такое.

3. Я думаю, что выходные данные пусты из-за вашей конфигурации PHP (сообщения об ошибках, показывать ошибки, …). Поскольку Symfony поставляется с огромным набором тестов, вам следует попытаться увеличить максимально допустимый объем памяти в вашем php.ini.

4. Ошибка действительно была неправильной настройкой error_reporting в php.ini. Там была опечатка. :/ Это работает с E_ALL | E_STRICT . 24 теста по-прежнему завершаются неудачей … что-то о времени и валютных форматах. Так или иначе, главная проблема решена. Спасибо вам всем!

Ответ №2:

Вы запускаете тесты, используя предоставленный phpunit.xml.dist файл конфигурации?

Из корневого каталога ваших проектов:

 $ phpunit --configuration app/phpunit.xml.dist vendor/symfony/tests
  

Это должно добавить автозагрузчик для поставщиков.

Комментарии:

1. Да, именно поэтому я использовал опцию «-c» (идентичную «—configuration»).