我正在努力使用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 --filter {TestMethodName}
不过,指定文件路径/引用也更安全
phpunit --filter {TestMethodName} {FilePath}
例子:
phpunit --filter testSaveAndDrop reference/to/escalation/EscalationGroupTest.php
快速注意:我已经注意到,如果我有一个名为testSave的函数和另一个名为testSaveAndDrop的函数,使用命令phpunit——filter testSave也将运行testSaveAndDrop和任何其他以testSave*开头的函数,这很奇怪!!
不过我来晚了。但就我个人而言,我讨厌写整句话。
相反,我在.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绑定。
现在,一旦您将光标放在任何函数上,然后使用键绑定,那么它将自动运行单个测试。
如果需要运行整个类,则将游标放在类的顶部,然后使用键绑定。
如果你有任何其他事情,那么总是与终端
编码快乐!
在你的项目根目录中运行这个,我在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);
}