我无法使用 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:44

composer.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”的主要内容,如果未能解决你的问题,请参考以下文章

PhpStorm 中的 PHPUnit 测试:无法打开文件

Cygwin和PHPUnit:无法打开输入文件:/ cygdrive / c / xampp / php / phpunit

PHPUnit无法打开文件

使用 WSL-2 和 Docker 在 PhpStorm 中设置 PHPUnit:无法解析 PHPUnit 版本输出:无法打开输入文件

Laravel:phpunit无法打开文件ExampleTest.php

运行 PHPUnit 测试时无法加载 Xdebug