我无法使用 phpunit 进行测试:无法打开文件“autoload.php”
Posted
技术标签:
【中文标题】我无法使用 phpunit 进行测试:无法打开文件“autoload.php”【英文标题】:I can't test with phpunit: Cannot open file "autoload.php" 【发布时间】:2015-04-22 03:09:10 【问题描述】:配置:
phpUNIT:4.5.0 PHP : 5.4.12 服务器:Wamp 作曲者:版本 1.0-dev 2015-02-17 21:55:44composer.json :
"require-dev":
"phpunit/phpunit": "4.5.*"
自动加载.php:
<?php
date_default_timezone_set("Europe/Paris");
require __DIR__.'/vendor/Symfony/Component/ClassLoader/UniversalClassLoader.php';
use Symfony\Component\ClassLoader\UniversalClassLoader;
$loader = new UniversalClassLoader();
$loader->registerNamespaces(array(
'Hangman' => __DIR__.'/src',
'Symfony' => __DIR__.'/vendor',
));
$loader->register();
phpunit.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!-- http://phpunit.de/manual/4.1/en/appendixes.configuration.html -->
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.1/phpunit.xsd"
backupGlobals="false"
colors="true"
bootstrap="autoload.php"
>
<testsuites>
<testsuite name="hangman">
<directory>tests/Hangman/Tests</directory>
</testsuite>
</testsuites>
<filter>
<blacklist>
<directory>vendor</directory>
</blacklist>
</filter>
</phpunit>
问题:
我执行了:phpunit --bootstrap autoload.php tests
我的错误:Cannot open file "autoload.php"
你能帮帮我吗?
【问题讨论】:
执行 phpunit 时不需要指定 bootstrap 文件,因为它已经在 phpunit.xml 文件中定义了。尝试使用绝对路径。 尝试在命令提示符或 git bash 中执行 composer dumpautoload 【参考方案1】:我正在使用 PHPUnit 7,基于我在下面提到的解决方案,该解决方案已经过测试并且可以 100% 工作
如果您是 windows 用户,请在 cmd 中键入以下内容: "vendor/bin/phpunit" --bootstrap ./vendor/autoload.php ./tests/EmailTest
确保在供应商和测试之前我已更新 ./。
【讨论】:
【参考方案2】:您可以在您的phpunit.xml
中尝试bootstrap="vendor/autoload.php"
。然后 PHPUnit 和您的测试将使用 Composer Autoloader。
或者您可以通过添加require 'vendor/autoload.php';
在您的autoload.php
中要求 Composer Autoloader(除了 Symfony 的 UCL)。这会导致注册两个自动装载机。
然后运行:
composer update
- 获取依赖并重建自动加载文件
phpunit
- 执行测试运行
您不需要运行phpunit
和--bootstrap
,因为该指令已在您的phpunit.xml 中设置。
我认为您的文件夹布局不正确。 你从这个开始:
c:\wamp\www\yourproject
\src
\tests
\- phpunit.xml.dist
\vendor
\composer.json
-
将
phpunit
添加到 composer.json 的 require-dev
部分
添加"bin-dir" : "bin"
,以便phpunit.bat 位于c:\wamp\www\yourproject\bin\phpunit.bat
而不是c:\wamp\www\yourproject\vendor\bin\phpunit.bat
composer install
或更新
执行c:\wamp\www\yourproject\bin\phpunit.bat -c c:\wamp\www\yourproject\tests\phpunit.xml.dist
【讨论】:
谢谢,我尝试了您的解决方案,但没有奏效。我仍然有同样的问题。 C:\wamp\www\phpunit\vendor\bin>phpunit autoload.php 测试无法打开文件“autoload.php”。 不是phpunit autoload.php tests
,只是phpunit
,如果你在同一个文件夹中有一个xml配置文件。此外,文件夹结构 (C:\wamp\www\phpunit\vendor\bin
) 表明您不在项目中(除非您想在 phpunit 本身上工作)。换句话说:您的项目应该存在于C:\wamp\www\yourproject
,而自动加载存在于C:\wamp\www\yourproject\vendor\autoload.php
。
我从 5.4 升级到 Laravel 5.5 后遇到了这个问题。你的建议解决了我的问题。以上是关于我无法使用 phpunit 进行测试:无法打开文件“autoload.php”的主要内容,如果未能解决你的问题,请参考以下文章
Cygwin和PHPUnit:无法打开输入文件:/ cygdrive / c / xampp / php / phpunit
使用 WSL-2 和 Docker 在 PhpStorm 中设置 PHPUnit:无法解析 PHPUnit 版本输出:无法打开输入文件