我们正在使用Zend Studio(Eclipse),并尝试在我们的代码上运行PHPUnit。我们最近致力于从“供应商”中移除代码。将源文件夹放入IDE包含的库中。因此,我们的所有自动完成工作都会按预期进行构建。
但是,我们的PHPUnit测试没有看到包含的库。测试失败,错误为"未定义的类"在我们使用的第一个实例中。
当库包含在代码本身中时,测试工作正常。因此,我们正试图弄清楚如何让他们与图书馆合作。
答案 0 :(得分:0)
在我看来,您的phpunit配置未设置为自动加载您的库。我相信您不应该将代码从vendor/
目录移动到library/
目录,因为这是由Composer自动配置的(因为您有vendor/
目录我假设您也使用Composer)因此,每次更新“供应商”软件包时,您现在需要复制/粘贴内容。
Composer的美妙之处在于它在vendor/
目录中还创建了一个autoload.php
文件,您可以将其用作phpunit的引导程序(或包含在另一个引导程序中)。
示例引导仅供应商包(如果phpunit.xml在app根目录中):
<?xml version="1.0" encoding="utf-8"?>
<phpunit bootstrap="vendor/autoload.php" haltOnFailure="true" haltOnError="true">
...
</phpunit>
src/
中的示例引导项目引导程序(如果phpunit.xml在app根目录中):
<?xml version="1.0" encoding="utf-8"?>
<phpunit bootstrap="src/MyProject/Bootstrap.php" haltOnFailure="true" haltOnError="true">
...
</phpunit>
此示例项目的引导程序可能如下所示:
<?php
defined ('APP_ROOT') ||
define('APP_ROOT', dirname(__DIR__) . '/../');
$paths = array (
APP_ROOT . '/src',
APP_ROOT . '/vendor',
get_include_path(),
);
set_include_path(implode(PATH_SEPARATOR, $paths));
/**
* @see autoload.php
*/
require_once 'autoload.php';
...