如何使用phpunit运行单一测试方法?

我奋力奔跑名为单个测试方法testSaveAndDrop在文件escalation/EscalationGroupTest.phpphpunit 。 我尝试了以下组合:

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*开头的函数,这很奇怪!

链接地址: http://www.djcxy.com/p/64551.html

上一篇: How to run single test method with phpunit?

下一篇: Best practices to test protected methods with PHPUnit