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文件。
当我跑步时:
phpunit --config myconfig.xml --bootstrap mybootstrap.php --loader My_Testsuite_Loader tests
PHPUnit将所有php文件放在“tests /”中并执行它们。将包含文件“My / Testsuite / Loader.php”。 PHPUnit检查类My_Testsuite_Loader是否存在。到目前为止一切都很好。
我使用“PHPUnit / Runner / StandardTestSuiteLoader.php”作为“My / Testsuite / Loader.php”的模板。它包含方法“load()”和“reload()”。 PHPUnit Framework从不调用这两种方法。为什么不?我认为有一个自己的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)并将其存储在私有成员var中的设置。
如何使用测试套件加载器/它的意图是什么? (如何排除不适合模式的测试类:“* Test.php”?)
答案 0 :(得分:-1)
您需要像“
”那样取出“测试”参数phpunit --config myconfig.xml --bootstrap mybootstrap.php
然后在你的myconfig.xml
中<testsuites>
<testsuite name="AllTests">
<directory>.</directory>
</testsuite>
<testsuites>
<filter>
<blacklist>
<directory suffix=".xml">.</directory>
<file>MyProject/Package/Object/TestTemplate.php</file>
</blacklist>
</filter>