繁体   English   中英

致命错误:找不到类'PHPUnit_Framework_TestCase'

[英]Fatal error: Class 'PHPUnit_Framework_TestCase' not found

我正在使用XAMPP 1.8.1,Windows 7 64位,Netbeans IDE 7.4我已经安装了PHPUnit。 当我运行代码时,我收到以下错误。

致命错误:第6行的D:\\ xampp \\ htdocs \\ PHPUnit \\ index.php中找不到类'PHPUnit_Framework_TestCase'

守则是:

<?php

class StackTest extends PHPUnit_Framework_TestCase {

    public function testPushAndpop() {
        $stack = array();
        $this->assertEquals(0, count($stack));

        array_push($stack, 'foo');
        $this->assertEquals('foo', $stack[count($stack) - 1]);
        $this->assertEquals(1, count($stack));

        $this->assertEquals('foo', array_pop($stack));
        $this->assertEquals(0, count($stack));
    }

}

?>

我在环境变量PATH中添加了D:\\ xampp \\ php任何人都建议我如何解决这个问题? 提前致谢。

您还没有提到您使用的是哪个版本的PHP,但如果它是3.5或更高版本,则只需添加

require_once 'PHPUnit/Autoload.php';

在代码顶部拉入所需的文件。

如果没有,请使用:

require_once 'PHPUnit/Framework/TestCase.php';

您不太可能使用3.5之前的版本,但我已经包含了以防万一。

您是否尝试在Web浏览器中运行测试? 这困惑了我一段时间。 编写PHPUnit测试以在命令行上运行。

我想你只需要获得最新版本的PHPUnit,而不包括下面提到的任何文件。 当我升级到最新版本但运行旧的单元测试时,这对我有用,它具有:

require_once 'PHPUnit/Framework/TestCase.php';

删除此行可解决问题。

对于新的PHPUnit版本,您需要在use PHPUnit\\Framework\\TestCase;的帮助下仅扩展TestCase而不是PHPUnit_Framework_TestCase use PHPUnit\\Framework\\TestCase;

旧的和被掠夺的方式:

// No namespace in this old method

class ClassATest extends PHPUnit_Framework_TestCase {

}

在像6.x这样的版本中采用的新方式:

// Namespace used in this new method

use PHPunit\Framework\TestCase;

class ClassATest extends TestCase {

}

如果你不使用这种新方法,你将遇到困难。 采用它,这将解决您的问题。

对于那些在更新phpunit到版本6发布后到达这里的人。 您需要将类重命名为: \\PHPUnit_Framework_TestCase to \\PHPUnit\\Framework\\TestCase

这有两个层次的答案。

第一个问题,对有些人,是,虽然类名是区分insentive在PHP中,磁带自动加载机有时是没有,所以你需要使用父类的正确名称: PHPUnit_Framework_TestCase

第二个问题是PHPUnit 6与其自身的不兼容性。 如果您和许多其他人一样,需要能够编写适用于任一版本的测试用例,请创建一个包含以下内容的新包含文件:

<?php

if (!class_exists('PHPUnit_Framework_TestCase') &&
  class_exists('\\PHPUnit\\Framework\\TestCase')) {
    abstract class PHPUnit_Framework_TestCase extends \PHPUnit\Framework\TestCase {
    }
}

然后,将此文件包含在每个测试用例的顶部。 测试用例本身继续继承上述类,例如,在我的代码中:

class Minijson_Tests extends PHPUnit_Framework_TestCase {

与之前的建议相反,包括PHPUnit/Autoload.phpPHPUnit/Framework/TestCase.php在PHPUnit 4.2.6(Debian jessie)和6.5.5(Debian sid)中都被证明是不必要的。 也没有必要编写类似的建议中包含的phpunit.xmlbootstrap.php等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM