如何包装PHPUnit来控制命令行报告?

时间:2010-10-14 20:01:36

标签: php phpunit

所以我有很多PHPUnit测试(它们实际上是作为PHPUnit测试运行的Selenium测试)。当我从命令行运行它们时,我会在测试完成时得到这种报告:

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

然后我必须等到所有测试完成后再告诉我错误和失败。我希望能够控制这一点,以便我可以做一些更有用的报告。例如:

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

如何控制PHPUnit如何显示结果?

3 个答案:

答案 0 :(得分:5)

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等方法;名称非常明显,将为发生的事件调用相应的代码当你的testuite运行时)。

这些代码使用xml配置文件连接到phpunit。

可以在此处查看此类自定义侦听器的一个很好的示例:http://raphaelstolt.blogspot.com/2010/06/growling-phpunits-test-status.html

答案 1 :(得分:1)

使用

--printer path/to/MyTestListener

指向自定义MyTestListener类的选项 http://www.phpunit.de/manual/3.6/en/textui.html#textui.clioptions

或者可以使用 printerClass 属性

在phpunit.xml配置文件中设置它

请参阅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

答案 2 :(得分:0)

如果您想要漂亮的HTML报告页面,请尝试使用phingphpunitreport任务。有关屏幕截图,请参阅my blog entry。对更大的测试套件非常有帮助。