PHPUnit --loader:什么是测试套件加载器?

时间:2012-05-08 08:39:49

标签: testing phpunit loader suite

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文件。

  1. 第一个想法是在配置xml中使用黑名单或白名单,但后来我意识到,这些列表是测试对象和筛选测​​试类的过滤器。
  2. 第二个想法是在config xml中使用测试套件。但目前只能定义测试套件,但不能通过命令行执行(不是在PHPUnit中实现的喷射,票证开放时间超过1年)。
  3. 接下来的想法是使用测试套件加载器,但我找不到关于如何使用它们的文档,以及tsl是否是我认为的。
  4. 当我跑步时:

    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”?)

1 个答案:

答案 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>