【问题标题】:PHPUnit --loader: What is a test suite loader for?PHPUnit --loader:什么是测试套件加载器?
【发布时间】:2012-05-16 17:46:37
【问题描述】:

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. 第二个想法是在配置 xml 中使用测试套件。但目前测试套件只能定义,不能通过命令行执行(不是在 PHPUnit 中实现的 jet,票已开放超过 1 年)。
  3. 下一个想法是使用测试套件加载器,但我找不到有关如何使用它们以及 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”?)

【问题讨论】:

  • 首先,没有--config这样的标志,它要么是-c要么是--configuration。其次,您不必提供引导文件或测试套件加载程序,如果您已经提供了配置文件,则可以在那里进行设置。第三,您甚至不必提供配置文件,只要它被称为phpunit.xmlphpunit.xml.dist 并且您从正确的目录调用phpunit 脚本。第四,关于您认为错误的文档是正确的。最后,我认为问题可能出在您的配置文件中。你能展示一下里面有什么吗?
  • @zafarkhaja:您对 --config 的看法是正确的。您可以使用命令行开关覆盖 xml 设置,如果您尝试将 phpunit 集成到 IDE 中(不同的运行配置,但共享 xml),这可能是有意义的。
  • @DanielaWaranie,是的,确实如此。在这些情况下,这是有道理的。谢谢。

标签: testing phpunit loader suite


【解决方案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>

【讨论】:

    猜你喜欢
    • 2011-11-07
    • 1970-01-01
    • 1970-01-01
    • 2014-09-21
    • 2014-12-13
    • 2011-11-10
    • 1970-01-01
    • 2011-07-27
    • 2020-03-05
    相关资源
    最近更新 更多