所以我有很多PHPUnit测试(它们实际上是作为PHPUnit测试运行的Selenium测试)。当我从命令行运行它们时,我会在测试完成时得到这种报告:
..E..F..E.FF...
然后我必须等到所有测试完成后再告诉我错误和失败。我希望能够控制这一点,以便我可以做一些更有用的报告。例如:
testLogin ....... passed
testFoobar ...... failed
- Failed asserting that foo = true on line 123
testBazbat ...... passed
如何控制PHPUnit如何显示结果?
答案 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报告页面,请尝试使用phing的phpunitreport
任务。有关屏幕截图,请参阅my blog entry。对更大的测试套件非常有帮助。