我有一个正常的目录结构:
- root
- vendor
- bin/phpunit
- tests
- bootstrap.php
我的composer.json:
{
"name": "test/testing",
"minimum-stability": "dev",
"require": {
"phpunit/phpunit": "4.1.*@dev",
"phpunit/phpunit-mock-objects": "2.2.*@dev"
},
"autoload": {
"classmap": ["tests/config.inc","test.inc"]
}
}
我的 bootstrap.php:
<?php
require_once 'vendor/autoload.php';
Bootstrap 中还有其他一些东西,这就是我需要它的原因, 但我在这里将其删除,因为它与我的问题无关。
当我尝试在根文件夹运行 PHPUnit 时:
vendor/bin/phpunit --bootstrap tests/bootstrap.php tests/ItemsTest.php
我收到错误:
PHP Warning: require(xxxx/vendor/phpunit/phpunit-mock-objects/tests/../vendor/autoload.php): failed to open stream: No such file or directory in xxxxxxx/vendor/phpunit/phpunit-mock-objects/tests/bootstrap.php on line 4
我不知道为什么 phpunit/自动加载器正在加载这个 Bootstrap :
phpunit-mock-objects/tests/bootstrap.php
当然还有第 4 行:
require __DIR__ . '/../vendor/autoload.php';
不起作用。
最佳答案
无论出于何种原因,PhpUnit 都不会将引导路径理解为相对路径。
按如下方式替换引导路径似乎可以解决问题:
vendor/bin/phpunit --bootstrap ./tests/bootstrap.php tests/ItemsTest.php
关于通过 Composer 安装的 PHPUnit 使用错误的自动加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24059602/