如何使用 PHPUnit 的 --filter 选项按“结尾”进行过滤


How can I filter by "ends with" using PHPUnit's --filter option?

我正在尝试过滤PHPUnit测试套件。当我尝试使用 --filter 按测试名称过滤时,将执行与指定字符串完全匹配的测试,但任何以字符串开头的测试也是如此。

例如。如果我有两个测试,测试示例和测试示例二,则以下内容运行这两个测试:

phpunit --filter testExample tests/Example.php

我怎样才能让phpunit坚持我给它的确切字符串?我已经尝试过/testExample$/但这没有运行任何测试。我正在使用 PHPUnit 3.7。

完全限定的测试名称因测试是否具有数据提供程序而异。

当没有数据提供者时,测试的名称只是Example::testExample,将使用/testExample$/执行。

phpunit --filter '/testExample$/' tests/Example.php
/**
 * No data provider.
 */
public function testExample() {
}

但是,对于数据提供程序,测试将变为Example::testExample with data set [dataset],这与模式/testExample$/不匹配。

我必须使用以下模式才能使其按预期工作,它与字符串的末尾或空格字符匹配。

phpunit --filter '/testExample'b/' tests/Example.php
/**
 * @dataProvider  exampleData
 */
public function testExample($data) {
}

为了补充上述信息,当测试具有数据提供程序时,筛选器正则表达式还可用于选择要运行的测试用例循环。例如--filter='thisTest'b.*#3'将使用数据集编号 3 运行thisTest。过滤似乎不适用于传递的数据值,仅适用于 # 数字。