PHPUnit不允许我包含文件

时间:2013-03-04 02:48:30

标签: phpunit

每当我尝试包含文件时,PHPUnit都会给我一条错误消息。例如,以下代码给出了错误:

<?php

include_once "PHPUnit/Autoload.php";
require_once "controller/ProductController.php";

class SecurityTests extends PHPUnit_Framework_TestCase
{
    public function testSmth() {
        $this->assertTrue(1==1);
    }
}

&GT;

但如果我删除第四行(require_once "controller/ProductController.php";),它运行正常。

我得到的错误是:

Warning: require_once(PHPUnit/Framework/Error.php): failed to open stream: No such file or directory in E:\wamp\bin\php\php5.4.3\pear\PHPUnit\Util\ErrorHandler.php on line 48

修改 我在php.ini文件中的include_path是:

include_path = ".;E:\wamp\bin\php\php5.4.3\pear\;E:\wamp\www\renting\"

奇怪的是:

<?php
echo get_include_path(); **// Will echo .;E:\wamp\bin\php\php5.4.3\pear\;E:\wamp\www\renting\** 
require_once 'PHPUnit/Autoload.php';
require_once 'controller/AccountController.php';
echo get_include_path(); **// Will echo E:/wamp/www/renting/**

还有:

<?php

require_once 'controller/AccountController.php';
echo get_include_path(); **// Will echo E:/wamp/www/renting/**
require_once 'PHPUnit/Autoload.php';

echo get_include_path(); **// Will not even echo.**

这对我来说很奇怪。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

这是一个知道问题。

验证您的PHUnit安装在packeges下面:

  梨通道发现pear.phpunit.de
   梨通道发现   components.ez.no
  pear install phpunit / PHP_CodeCoverage

如果您没有权限,请尝试 sudo

一些可以帮助您的链接:

https://bugs.launchpad.net/ubuntu/+source/phpunit/+bug/701544

fatal error 'File/Iterator/Autoload.php' not found when running phpunit

phpunit require_once() error

答案 1 :(得分:0)

好的,花了我几天时间才想出这个。我希望没有人能够完成我的工作。

我的php.ini:

include_path = ".;E:\wamp\bin\php\php5.4.3\pear\;E:\wamp\www\renting\"

但是因为我以前在我的ini文件中不使用多个php include路径,所以我使用了

set_include_path("E:/wamp/www/renting/");

在某些文件中,即使它们不是我试图包含的文件。

无论如何,它可能听起来很愚蠢和混乱,但是如果你发现自己因为某种原因无法正确加载PHPUnit的情况,那么会想到你的代码以某种方式更改包含路径的可能性。

答案 2 :(得分:0)

我有一个类似的问题,PHPUnit无法在父目录中找到文件。它只是 将定位为子文件的文件定位到导入文件的类的当前目录,例如

文件结构:

var/
    www/
        /api
            index.php
            conf.php
        /config
           dbconfig.php

index.php

require_once 'conf.php'; #works fine
require_once '../config/dbconfig.php; #ERROR

PHPUnit在尝试转到父文件夹时找不到相对路径。 读取this answer.之后,解决方案是插入dirname(dirname(__FILE__))dirname(__FILE__),它返回当前目录的路径,通过对路径应用dirname,它返回父路径。 / p>

index.php

require_once 'conf.php'; #works fine
require_once dirname(dirname(__FILE__)) . '../config/dbconfig.php'; #works fine.