所以我有很多PHPUnit测试(它们实际上是作为PHPUnit测试运行的Selenium测试).当我从命令行运行它们时,我会在测试完成时得到这种报告:
..E..F..E.FF...
Run Code Online (Sandbox Code Playgroud)
然后我必须等到所有测试完成后再告诉我错误和失败.我希望能够控制这一点,以便我可以做一些更有用的报告.例如:
testLogin ....... passed
testFoobar ...... failed
- Failed asserting that foo = true on line 123
testBazbat ...... passed
Run Code Online (Sandbox Code Playgroud)
如何控制PHPUnit如何显示结果?
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
Run Code Online (Sandbox Code Playgroud)
正如您所看到的--testdox没有显示失败原因,它的用法就像一种规范生成器.但是-tap非常接近.
并且您总是可以编写自己的测试监听器 - 一个实现PHPUnit_Framework_Testlistener接口的自定义类(具有startTest,endTest,addFailure,addError等方法;名称非常不言自明,将为您的testsuite时发生的事件调用相应的代码运行).
这些代码使用xml配置文件连接到phpunit.
这里可以看到这种自定义监听器的一个很好的例子:http://raphaelstolt.blogspot.com/2010/06/growling-phpunits-test-status.html