2

每当我尝试包含文件时,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);
    }
}

?>

但如果我删除第四行 ( 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.**

这对我来说很奇怪。

有任何想法吗?

4

3 回答 3

2

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

文件结构:

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

索引.php

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

PHPUnit 在尝试转到父文件夹时无法找到相对路径。看完这个答案。解决方案是 insert dirname(dirname(__FILE__))dirname(__FILE__)它返回当前目录dirname的路径,通过应用于路径,它返回父路径。

索引.php

require_once 'conf.php'; #works fine
require_once dirname(dirname(__FILE__)) . '../config/dbconfig.php'; #works fine.
于 2019-06-18T08:52:21.180 回答
1

这是一个已知问题。

验证您的 PHUnit 安装在以下软件包中:

pear channel-discover pear.phpunit.de
pear channel-discover components.ez.no
pear install phpunit/PHP_CodeCoverage

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

一些对您有帮助的链接:

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

运行 phpunit 时找不到致命错误“File/Iterator/Autoload.php”

phpunit require_once() 错误

于 2013-03-04T07:57:06.233 回答
0

好吧,我花了几天时间才弄清楚这一点。我希望没有人会经历我所经历的。

我的 php.ini 中有:

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

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

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

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

无论如何,这听起来可能很愚蠢和令人困惑,但是如果您发现自己处于 PHPUnit 由于某种原因无法正确加载的情况,请考虑您的代码以某种方式更改包含路径的可能性。

于 2013-03-09T02:38:06.303 回答