PHPUnit 手册说:
如果您将 PHPUnit 命令行测试运行程序指向一个目录,它将查找 *Test.php 文件。
见:http ://www.phpunit.de/manual/3.6/en/organizing-tests.html#organizing-tests.filesystem
这是错误的!
当我打电话时:
phpunit --config myconfig.xml --bootstrap mybootstrap.php tests
它需要所有的php文件。
- 第一个想法是在配置 xml 中使用黑名单或白名单,但后来我意识到,这些列表是测试对象的过滤器和过滤器测试类。
- 第二个想法是在配置 xml 中使用测试套件。但目前测试套件只能定义,不能通过命令行执行(不是在 PHPUnit 中实现的 jet,票已开放超过 1 年)。
- 接下来的想法是使用测试套件加载器,但我找不到有关如何使用它们以及 tsl 是否是我认为的文档的文档。
当我运行时:
phpunit --config myconfig.xml --bootstrap mybootstrap.php --loader My_Testsuite_Loader tests
PHPUnit 获取“tests/”中的所有 php 文件并执行它们。将包含文件“My/Testsuite/Loader.php”。PHPUnit 检查类 My_Testsuite_Loader 是否存在。到目前为止一切都很好。
我使用“PHPUnit/Runner/StandardTestSuiteLoader.php”作为“My/Testsuite/Loader.php”的模板。它包含方法“load()”和“reload()”。PHPUnit 框架从不调用这两种方法。为什么不?我认为拥有一个自己的 testsuiteloder 会给我实现测试套件排除模式的机会。
我的项目的示例文件系统:
<root>
|-src/MyProject/Package/Object.php
|-tests/MyProject/Package/Object/TestTemplate.php
|-tests/MyProject/Package/Object/GetFooTest.php
|-tests/MyProject/Package/Object/GetBarTest.php
|-tests/phpunit.xml
|-tests/bootstrap.php
|-tests/My/Testsuite/Loader.php
正如你所看到的,我使用一个文件进行所有关于 sut(被测方法)的测试。所有这些 *Test.php 文件都继承自 TestTemplate (TestCase)。在 TestTemplate.php 中是一个初始化对象(Object.php)并将其存储在私有成员变量中的设置。
如何使用测试套件加载器/它的含义是什么?(如何排除不符合模式的测试类:“*Test.php”?)