我无法用phpunit测试:无法打开文件“autoload.php”

时间:2015-02-20 12:25:12

标签: php phpunit wamp composer-php


配置:

  • 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.*"
    }
}

autoload.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"

你能帮帮我吗?

2 个答案:

答案 0 :(得分:2)

您可以在bootstrap="vendor/autoload.php"中尝试phpunit.xml。然后PHPUnit和您的测试将使用Composer Autoloader。

或者您可以通过添加autoload.phprequire 'vendor/autoload.php';中要求Composer Autoloader(除了Symfony的UCL之外)。这导致两个自动加载器被注册。

然后运行:

  1. composer update - 获取依赖关系并重建自动加载文件
  2. phpunit - 执行测试运行
  3. 您不需要使用phpunit运行--bootstrap,因为该指令已在您的phpunit.xml中设置。


    我认为你的文件夹布局不对。 你从这开始:

    c:\wamp\www\yourproject
      \src
      \tests
        \- phpunit.xml.dist
      \vendor
      \composer.json
    
    1. phpunit添加到composer.json
    2. require-dev部分
    3. 添加"bin-dir" : "bin",以便phpunit.bat位于c:\wamp\www\yourproject\bin\phpunit.bat而非c:\wamp\www\yourproject\vendor\bin\phpunit.bat
    4. composer install或更新
    5. exec c:\wamp\www\yourproject\bin\phpunit.bat -c c:\wamp\www\yourproject\tests\phpunit.xml.dist

答案 1 :(得分:1)

我正在使用PHPUnit 7,并且在此基础上,我在下面提到了经过测试并可以100%工作的解决方案

如果您是Windows用户,请在cmd上键入以下内容: “ vendor / bin / phpunit” --bootstrap ./vendor/autoload.php ./tests/EmailTest

确保在供应商和测试之前,我已经更新了./。