我正在努力使用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。


当前回答

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

其他回答

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

运行所有测试的原因是文件名后面有——filter标志。PHPUnit根本不读取选项,因此正在运行所有的测试用例。

从帮助屏幕:

 Usage: phpunit [options] UnitTest [UnitTest.php]
        phpunit [options] <directory>

因此,将——filter参数移动到您想要的测试文件之前,如@Alex和 @Ferid Mövsümov回答。您应该只运行您想要运行的测试。

为在laravel中运行phpunit测试提供了多种方法。

vendor/bin/phpunit --filter methodName className pathTofile.php

vendor/bin/phpunit --filter 'namespace\\directoryName\\className::methodName'

对于测试单类:

vendor/bin/phpunit --filter  tests/Feature/UserTest.php
vendor/bin/phpunit --filter 'Tests\\Feature\\UserTest'
vendor/bin/phpunit --filter 'UserTest' 

测试单一方法:

 vendor/bin/phpunit --filter testExample 
 vendor/bin/phpunit --filter 'Tests\\Feature\\UserTest::testExample'
 vendor/bin/phpunit --filter testExample UserTest tests/Feature/UserTest.php

对于从命名空间中的所有类运行测试:

vendor/bin/phpunit --filter 'Tests\\Feature'

有关更多方式运行测试,请参阅更多

如果你使用的是XML配置文件,你可以在phpunit标签中添加以下内容:

<groups>
  <include>
    <group>nameToInclude</group>
  </include>
  <exclude>
    <group>nameToExclude</group>
  </exclude>
</groups>

参见https://phpunit.de/manual/current/en/appendixes.configuration.html

考虑到你

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