簡體   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