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

she*_*lco 2 php regex phpunit

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

例如。如果我有两个测试,testExample 和 testExampleTwo,下面会运行这两个测试:

phpunit --filter testExample tests/Example.php
Run Code Online (Sandbox Code Playgroud)

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

she*_*lco 6

完全限定的测试名称取决于测试是否具有数据提供者。

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

phpunit --filter '/testExample$/' tests/Example.php

/**
 * No data provider.
 */
public function testExample() {

}
Run Code Online (Sandbox Code Playgroud)

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

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

phpunit --filter '/testExample\b/' tests/Example.php

/**
 * @dataProvider  exampleData
 */
public function testExample($data) {

}
Run Code Online (Sandbox Code Playgroud)