testing - PHPUnit --loader : What is a test suite loader for?

标签 testing phpunit loader suite

PHPUnit 手册说:

If you point the PHPUnit command-line test runner to a directory it will look for *Test.php files.

参见: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 框架从不调用这两种方法。为什么不?我认为拥有自己的测试套件加载器将使我有机会实现测试套件排除模式。

我的项目的示例文件系统:

<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) 并将其存储在私有(private)成员变量中的设置。

如何使用测试套件加载器/它的用途是什么? (如何排除不符合模式的测试类:“*Test.php”?)

最佳答案

你需要像这样去掉'tests'参数

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>

关于testing - PHPUnit --loader : What is a test suite loader for?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10495292/

相关文章:

java - 如何将 Java 控制台输出通过管道传输到文件?

testing - 从 vows 启动服务器进行测试的正确方法是什么?

php - Laravel 5.1 PHPUnit - press() 给我 'Unreachable field ""'

unit-testing - 如何使用 kotlin-test 编写 Kotlin 单元测试?

phpunit mock 不计算函数调用

rest - 使用 phpunit 和doctrine 测试 symfony Restful api

php - 如何在 PHPUnit 中实现 If/Else 的代码覆盖率?

loader - 迄今为止最小的 AMD 加载程序是什么?

c++ - 关于链接/加载和模拟器的问题

java.lang.IllegalAccessError : tried to access field