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

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 tests/{testfilename}

Eg:

phpunit tests/StackoverflowTest.php

如果您想在Laravel 5.5中运行单个测试用例,请尝试

vendor/bin/phpunit tests/Feature/{testfilename} 

vendor/bin/phpunit tests/Unit/{testfilename} 

Eg:

vendor/bin/phpunit tests/Feature/ContactpageTest.php 

vendor/bin/phpunit tests/Unit/ContactpageTest.php

其他回答

下面的命令将精确地执行testSaveAndDrop test。

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

考虑到你

vendor/bin/phpunit --filter=EscalationGroupTest::testSaveAndDrop

下面是更一般的答案:

如果你确定方法名是唯一的,你只能通过方法名进行过滤(这对我来说是有效的)

phpunit --filter {TestMethodName}

不过,指定文件路径/引用也更安全

phpunit --filter {TestMethodName} {FilePath}

例子:

phpunit --filter testSaveAndDrop reference/to/escalation/EscalationGroupTest.php

快速注意:我已经注意到,如果我有一个名为testSave的函数和另一个名为testSaveAndDrop的函数,使用命令phpunit——filter testSave也将运行testSaveAndDrop和任何其他以testSave*开头的函数,这很奇怪!!

就像这样

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

没有=和有'

https://phpunit.de/manual/3.7/en/textui.html

如果您在netbeans中,您可以右键单击测试方法,然后单击“运行集中测试方法”。