如何用phpunit运行单一testing方法?

我正努力在testSaveAndDrop文件escalation/EscalationGroupTest.php运行一个名为testSaveAndDroptesting方法。 我尝试了以下组合:

 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一种方法呢?

该类的名称是EscalationGroupTestphpunit的版本是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*开头的函数,这很奇怪!

以下命令将执行完全testSaveAndDroptesting。

 phpunit --filter '/::testSaveAndDrop$/' escalation/EscalationGroupTest.php 

所以,这样的事情

 phpunit --filter 'EscalationGroupTest::testSaveAndDrop' EscalationGroupTest escalation/EscalationGroupTest.php 

没有=和与'

https://phpunit.de/manual/3.7/en/textui.h​​tml

如果你在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