PHPUnit如何配置仅运行类名以Test为后缀的测试用例?
解决方案
方案一(最优,仅修改配置,无业务代码改动)
直接修改phpunit-config.xml,给<directory>标签添加testClassSuffix="Test"属性即可,配置如下:
<phpunit bootstrap="./bootstrap.php"> <testsuites> <testsuite name="all"> <directory testClassSuffix="Test">./tests</directory> </testsuite> </testsuites> </phpunit>
该配置会强制PHPUnit仅将类名以Test结尾且继承了TestCase的类识别为可执行测试类,ExampleHelper类名不符合后缀规则,不会被执行,完全匹配你的需求。
备选方案(需少量改动业务代码)
如果有特殊场景无法使用配置规则,可以给不需要执行的非Test后缀测试类添加abstract关键字,PHPUnit不会执行抽象测试类。如果该类不能修改为抽象类,也可以给类添加@group ignore注解,再在phpunit配置中排除该分组,不过改造成本远高于方案一。
规则变更说明
PHPUnit 4.8及更早版本默认仅识别类名以Test结尾的类为测试类,5.0之后调整了默认规则,只要继承了TestCase的类都会被识别为测试类,所以才会出现你遇到的兼容问题。
内容的提问来源于stack exchange,提问作者maiermic
相关产品推荐
相关产品推荐

