Как обернуть PHPUnit для управления отчетами командной строки?

Итак, у меня есть много тестов PHPUnit (на самом деле это тесты Selenium, работающие как тесты PHPUnit). Когда я запускаю их из командной строки, я получаю такой отчет о завершении тестов:

..E..F..E.FF...

Затем мне нужно дождаться завершения всех тестов, прежде чем он сообщит мне об ошибках и о том, что не удалось. Я хотел бы иметь возможность контролировать это, чтобы я мог делать более полезные отчеты. Например:

testLogin ....... passed
testFoobar ...... failed
    - Failed asserting that foo = true on line 123
testBazbat ...... passed

Как я могу получить контроль над тем, как PHPUnit отображает результаты?


person Andrew    schedule 14.10.2010    source источник


Ответы (3)


PHPUnit имеет несколько параметров командной строки для управления форматом вывода. Наиболее полезными для вас являются --testdox и --tap.

Они работают следующим образом:

]> phpunit --tap FooTest.php 
TAP version 13
not ok 1 - Failure: FooTest::test_add
  ---
  message: fark
  severity: fail
  ...
ok 2 - FooTest::test_exists
ok 3 - FooTest::test_show_html
ok 4 - FooTest::test_show_array
ok 5 - FooTest::test_show_empty
ok 6 - FooTest::test_find
1..6


]> phpunit --testdox FooTest.php 
PHPUnit 3.5.0 by Sebastian Bergmann.

Foo
 [ ] test add
 [x] test exists
 [x] test show html
 [x] test show array
 [x] test show empty
 [x] test find

Как видите, --testdox не показывает причину сбоя, его можно использовать как своего рода генератор спецификаций. Но --tap подходит довольно близко.

И вы всегда можете написать свой собственный тестовый слушатель — пользовательский класс, который реализует интерфейс PHPUnit_Framework_Testlistener (имеет такие методы, как startTest, endTest, addFailure, addError и т. д.; имена говорят сами за себя, соответствующий код будет вызываться для событий, которые происходят, когда ваш набор тестов бежит).

Такой код подключается к phpunit с помощью конфигурационного файла xml.

Один хороший пример такого пользовательского прослушивателя можно посмотреть здесь: http://raphaelstolt.blogspot.com/2010/06/growling-phpunits-test-status.html

person Anti Veeranna    schedule 15.10.2010
comment
Спасибо. Это действительно полезно. Не могли бы вы подробнее рассказать о том, что вы подразумеваете под тестовым слушателем и загрузчиком? Это может быть то, к чему я хочу пойти с этим, но я не знаю, с чего начать. - person Andrew; 15.10.2010
comment
Я отредактировал ответ, указав более подробную информацию о тестовых слушателях. Пользовательский тестовый загрузчик на самом деле не имеет отношения к вашей проблеме, поэтому я удалил эту часть. - person Anti Veeranna; 15.10.2010
comment
--tap не отображает никакой полезной информации об ошибках. ИМО --verbose более полезен. - person Tgr; 15.12.2011

использовать

--printer path/to/MyTestListener

возможность указать на ваш собственный класс MyTestListener http://www.phpunit.de/manual/3.6/en/textui.html#textui.clioptions

или его можно установить в файле конфигурации phpunit.xml с помощью свойства printerClass.

см. http://www.phpunit.de/manual/3.6/en/appendixes.configuration.html#appendixes.configuration

Вот инструкции по созданию собственного класса принтера http://www.phpunit.de/manual/current/en/extending-phpunit.html#extending-phpunit.examples.SimpleTestListener.php

Если вы не хотите начинать с нуля, просто переименуйте и измените принтер по умолчанию https://github.com/sebastianbergmann/phpunit/blob/master/PHPUnit/TextUI/ResultPrinter.php

person Josh Woodcock    schedule 03.03.2013

Если вам нужны красивые HTML-страницы отчетов, попробуйте использовать задачу phpunitreport phing. Скриншоты см. в записи моего блога. Очень полезно для больших наборов тестов.

person cweiske    schedule 30.04.2011