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


当前回答

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

从帮助屏幕:

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

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

其他回答

在你的项目根目录中运行这个,我在laravel根目录中使用。


vendor/bin/phpunit --filter 'Your method name'

自定义方法名的示例。

 /** @test //Initilize this for custom method name, without test keyword
  *  
  * Test case For Dashboard When User Not logged In it will redirect To login page
  */
  public function only_logged_in_user_see_dashboard()
  {
    $response = $this->get('/dashboard')
                   ->assertRedirect('/login');
  }

带有test关键字的示例

/**
* A basic test example.
*
* @return void
*/
 public function testBasicTest()
 {
  $this->assertTrue(true);
 }

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

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

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

不过我来晚了。但就我个人而言,我讨厌写整句话。

相反,我在.bash_profile文件中使用以下快捷方式,以确保在添加任何新别名之后源文件为.bash_profile,否则它将无法工作。

alias pa="php artisan"
alias pu="vendor/bin/phpunit" 
alias puf="vendor/bin/phpunit --filter"

用法:

puf function_name

puf filename

如果你使用Visual Studio Code,你可以使用下面的包来简化你的测试。

Package Name: Better PHPUnit
Link: https://marketplace.visualstudio.com/items?itemName=calebporzio.better-phpunit

然后,您可以在设置中设置键绑定。我在MAC中使用Command + T绑定。

现在,一旦您将光标放在任何函数上,然后使用键绑定,那么它将自动运行单个测试。

如果需要运行整个类,则将游标放在类的顶部,然后使用键绑定。

如果你有任何其他事情,那么总是与终端

编码快乐!

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

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

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