如何用phpunit运行单一testing方法?
我正努力在testSaveAndDrop
文件escalation/EscalationGroupTest.php
运行一个名为testSaveAndDrop
testing方法。 我尝试了以下组合:
phpunit EscalationGroupTest escalation/EscalationGroupTest.php --filter=escalation/EscalationGroupTest.php::testSaveAndDrop phpunit EscalationGroupTest escalation/EscalationGroupTest.php --filter=EscalationGroupTest.php::testSaveAndDrop phpunit EscalationGroupTest escalation/EscalationGroupTest.php --filter=EscalationGroupTest::testSaveAndDrop phpunit EscalationGroupTest escalation/EscalationGroupTest.php --filter=testSaveAndDrop
在每种情况下, 都会执行文件escalation/EscalationGroupTest.php
中的所有testing方法。 如何只select一种方法呢?
该类的名称是EscalationGroupTest
, phpunit
的版本是3.2.8。
以下命令在单个方法上运行testing:
phpunit --filter testSaveAndDrop EscalationGroupTest escalation/EscalationGroupTest.php
我更喜欢在注解中标记testing
/** * @group failing * Tests the api edit form */ public function testEditAction()
然后运行它
phpunit --group failing
不需要在命令行中指定完整path,但是必须记住在提交之前删除它,而不是混淆代码。
您也可以为单个testing指定几个组
/** * @group failing * @group bug2204 */ public function testSomethingElse() { }
这是更通用的答案:
如果你确定方法名是唯一的,你只能通过方法名来过滤(这对我有效)
phpunit --filter {TestMethodName}
但是,指定文件path/引用也更安全
phpunit --filter {TestMethodName} {FilePath}
例:
phpunit --filter testSaveAndDrop reference/to/escalation/EscalationGroupTest.php
快速提示:我注意到,如果我有一个名为testSave
的函数和另一个名为testSaveAndDrop
函数,使用命令phpunit --filter testSave
也将运行testSaveAndDrop
和任何其他以testSave*
开头的函数,这很奇怪!
以下命令将执行完全testSaveAndDrop
testing。
phpunit --filter '/::testSaveAndDrop$/' escalation/EscalationGroupTest.php
所以,这样的事情
phpunit --filter 'EscalationGroupTest::testSaveAndDrop' EscalationGroupTest escalation/EscalationGroupTest.php
没有=
和与'
如果你在NetBeans中,你可以在testing方法中点击右键,然后点击“Run Focused Test Method”。
你的testing全部运行的原因是你在文件名之后有--filter
标志。 PHPUnit根本不读取选项,所以运行所有的testing用例。
从帮助屏幕:
Usage: phpunit [options] UnitTest [UnitTest.php] phpunit [options] <directory>
因此,在--filter
和@FeridMövsümov所提到的testing文件之前,请移动--filter
参数。 而且你应该只有你想运行的testing。
如果您正在使用XMLconfiguration文件,则可以在phpunit
标记中添加以下内容:
<groups> <include> <group>nameToInclude</group> </include> <exclude> <group>nameToExclude</group> </exclude> </groups>
请参阅https://phpunit.de/manual/current/en/appendixes.configuration.html