【问题标题】:WP_UnitTestCase - how to configure the include_path correctly with phpunit PHARWP_UnitTestCase - 如何使用 phpunit PHAR 正确配置 include_path
【发布时间】:2015-08-29 10:34:50
【问题描述】:

我正在尝试为我的 wordpress 插件编写一个 php 单元测试,并且一直在关注writing-wordpress-plugin-unit-tests 教程。我已经在本地克隆了“core.trac.wordpress.org/browser/tests/trunk/includes

我已经通过 PHAR 机制安装了 phpunit,如下所述:https://phpunit.de/manual/current/en/installation.html#installation.requirements。我也有 composer.json 配置

[14:11:04@~]$ phpunit --version
PHPUnit 4.7.3 by Sebastian Bergmann and contributors.

在我的 /etc/php.ini 文件中

include_path="."

当我运行我的 phpunit 时,我得到了这个错误

[14:18:07@bhaawp]$ phpunit 
PHP Fatal error:  require_once(): Failed opening required 'PHPUnit/Autoload.php' (include_path='.') in /Users/pauloconnell/projects/bhaawp/wp-phpunit/bootstrap.php on line 7

bootstrap.php 文件有这个包含

<?php
/**
 * Installs WordPress for running the tests and loads WordPress and the test libraries
 */
require_once 'PHPUnit/Autoload.php';

我想我需要将 phpunit 文件夹添加到路径中,但是对于应该将其设置到哪里有一个心理障碍?

【问题讨论】:

  • 这可能最好在WordPress Development SE site上询问。
  • 你应该克隆trunk/tests而不是tests/trunk。它有所不同,因为测试/主干已经过时,不再维护。

标签: wordpress phpunit composer-php


【解决方案1】:

PHPUnit 没有名为 PHPUnit/Autoload.php 的文件(不再存在)。

如果 Wordpress 的测试套件和/或测试 Wordpress 插件的最佳实践提到/使用该文件,那么这表明 Wordpress 依赖于过时的 PHPUnit 版本。

【讨论】:

  • 谢谢 - 您是否有一个正确加载 PHPUnit 库的示例?我已阅读您网站上的文档,但仍不清楚我应该进行哪些更改。
  • 无需加载。如果您使用的是 PHAR,那么您已经准备就绪,因为 PHAR 的引导程序会处理它。如果您使用的是 Composer,那么您使用的是 Composer 生成的自动加载器。
【解决方案2】:

您需要克隆https://core.trac.wordpress.org/browser/trunk/tests/phpunit/includes/。您正在克隆的那个是旧的,不再更新。

您将看到new bootstrap.php 中不再存在该行。

【讨论】:

  • 谢谢 - 已经下载了最新的代码,但我仍然有同样的错误。你能解释一下新的 bootstrap.php 文件是从哪里加载的,因为 phpunit.xml 不再引用它。
  • @emeraldjava — phpunit.xml 需要引用您自己的引导文件,而该文件又应该包含来自 WordPress 的“新”bootstrap.php 文件。
猜你喜欢
  • 2013-05-08
  • 2020-05-23
  • 2015-03-30
  • 2012-09-14
  • 2019-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多