如何使用phpunit运行单一测试方法?
我奋力奔跑名为单个测试方法testSaveAndDrop
在文件escalation/EscalationGroupTest.php
与phpunit
。 我尝试了以下组合:
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
中的所有测试方法。 如何只选择一种方法?
该类的名称是EscalationGroupTest
并且phpunit
的版本是3.2.8。
以下命令在单个方法上运行测试:
phpunit --filter testSaveAndDrop EscalationGroupTest escalation/EscalationGroupTest.php
phpunit --filter methodName ClassName path/to/file.php
我更喜欢在注释中标记测试
/**
* @group failing
* Tests the api edit form
*/
public function testEditAction()
然后运行它
phpunit --group failing
无需在命令行中指定完整路径,但必须记住在提交之前删除它,而不是混淆代码。
您也可以为单个测试指定几个组
/**
* @group failing
* @group bug2204
*/
public function testSomethingElse()
{
}
以下是更通用的答案:
如果您确定方法名称是唯一的,您只能按方法名称进行过滤(这适用于我)
phpunit --filter {TestMethodName}
但是,指定文件路径/引用也更安全
phpunit --filter {TestMethodName} {FilePath}
例:
phpunit --filter testSaveAndDrop reference/to/escalation/EscalationGroupTest.php
快速提示:我注意到,如果我有一个名为testSave
的函数和另一个名为testSaveAndDrop
函数,使用命令phpunit --filter testSave
也会运行testSaveAndDrop
和其他任何以testSave*
开头的函数,这很奇怪!