使用命令行运行测试时遇到问题:如果我像这样运行phpunit:
phpunit -–no-configuration -–filter testAdd DataTest DataProviderTest.php
Run Code Online (Sandbox Code Playgroud)
它工作正常.但是我们使用正则表达式来指定我们想要测试的方法的名称:
phpunit -–no-configuration -–filter /::testAdd$/ DataTest DataProviderTest.php
Run Code Online (Sandbox Code Playgroud)
不幸的是,第二种方法不起作用.源代码是:
<?php
class DataTest extends PHPUnit_Framework_TestCase
{
/**
* @dataProvider provider
*/
public function testAdd($a, $b, $c)
{
$this->assertEquals($c, $a + $b);
}
public function provider()
{
return array(
array(0, 0, 0),
array(0, 1, 1),
array(1, 0, 1),
array(1, 1, 3)
);
}
}
?>
Run Code Online (Sandbox Code Playgroud)
Dav*_*ess 13
使用或不使用数据集来处理测试的正则表达式是
phpunit --filter "/::<method>( with data set .*)?$/" <class> <file>
Run Code Online (Sandbox Code Playgroud)
例如
phpunit --filter "/::testAdd( with data set .*)?$/" DataTest DataProviderTest.php
Run Code Online (Sandbox Code Playgroud)
由于测试方法在名称中没有空格,除非它有数据集,否则你可以将其缩小为
phpunit --filter "/::testAdd( .*)?$/" DataTest DataProviderTest.php
Run Code Online (Sandbox Code Playgroud)
就像@sjoerd指出的那样,匹配的名称包含数据集的编号.
这意味着这有效:
phpunit --filter "testAdd with data set #0" DataTest DataProviderTest.php
Run Code Online (Sandbox Code Playgroud)
对你的文件产生:
PHPUnit 3.7.0RC1 by Sebastian Bergmann.
.
Time: 0 seconds, Memory: 5.25Mb
OK (1 test, 1 assertion)
Run Code Online (Sandbox Code Playgroud)
在PHPUnit 3.5及更高版本中测试过.
它不是很漂亮,在PHPUnit中有另一种语法是绝对可取的,但现在它可以解决你的问题,一旦有人发送PR,它将更好用;)
跟踪问题的更好的语法 phpunit github issue tracker
在这种情况下,正则表达式与以下字符串匹配:
DataTest::testAdd with data set #0
DataTest::testAdd with data set #1
...
Run Code Online (Sandbox Code Playgroud)
所以你的正则表达式自然testAdd$不会工作。
| 归档时间: |
|
| 查看次数: |
4221 次 |
| 最近记录: |