每当我尝试包含文件时,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.**
这对我来说很奇怪。
有什么想法吗?
答案 0 :(得分:1)
这是一个知道问题。
验证您的PHUnit安装在packeges下面:
梨通道发现pear.phpunit.de如果您没有权限,请尝试 sudo 。
梨通道发现 components.ez.no
pear install phpunit / PHP_CodeCoverage
一些可以帮助您的链接:
https://bugs.launchpad.net/ubuntu/+source/phpunit/+bug/701544
fatal error 'File/Iterator/Autoload.php' not found when running phpunit
答案 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
require_once 'conf.php'; #works fine
require_once '../config/dbconfig.php; #ERROR
PHPUnit在尝试转到父文件夹时找不到相对路径。
读取this answer.之后,解决方案是插入dirname(dirname(__FILE__))
,dirname(__FILE__)
,它返回当前目录的路径,通过对路径应用dirname
,它返回父路径。 / p>
require_once 'conf.php'; #works fine
require_once dirname(dirname(__FILE__)) . '../config/dbconfig.php'; #works fine.