我需要从本地单元测试执行中排除几个命名空间。这是因为我的本地环境中没有CI管道中可用的一些服务。我可以通过运行以下命令来包括命名空间:
phpunit --filter 'MyApp\\Providers\\Provider1'
我知道filter
选项接受正则表达式,如www.example.com中所述https://phpunit.readthedocs.io/en/9.5/textui.html#command-line-options。但是,我无法找到一个有效的正则表达式来排除两个或更多的名称空间。
尝试了不同的组合,如:
phpunit --filter '(?!(MyApp\\Providers\\Provider1)|(MyApp\\Services\\Service1)).*'
这可能是错的。
1条答案
按热度按时间x8goxv8g1#
您没有指定向前看的起始位置。因此它将占用从0到行内容长度的整行。
例如,如果有3行分别为
a1
、a2
、a3
和已使用的(?!(a1|a2)).*
,则结果将为1
、2
、a3
。因为您只跳过两行的0位置(
a1
和b1
之前)。如果指定起始位置,如
^(?!(a1|a2)).*
,则结果将仅为a3
。因为仅从行的开头(
^
)应用前瞻,并且.*
将占用整个行。https://regex101.com/r/bBEUOD/1