2014-02-14 163 views
2

我使用的是XAMPP 1.8.1,Windows 7 64位,Netbeans IDE 7.4 我已經安裝了PHPUnit。 當我運行代碼時,出現以下錯誤。致命錯誤:找不到類'PHPUnit_Framework_TestCase'

Fatal error: Class 'PHPUnit_Framework_TestCase' not found in D:\xampp\htdocs\PHPUnit\index.php on line 6

的代碼是:

<?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)); 
    } 

} 

?> 

我已經加入d:\ XAMPP \ PHP在環境變量PATH 任何人都建議我該如何解決這個問題呢? 在此先感謝。

回答

3

您是否試圖在Web瀏覽器中運行測試?這讓我困惑了一會兒。 PHPUnit測試被編寫爲在命令行上運行。

4

你沒有提到你正在使用的PHP版本,但如果是3.5或更高版本,只需添加

require_once 'PHPUnit/Autoload.php'; 

你的代碼的頂部所需的文件拉。

如果沒有,使用:

require_once 'PHPUnit/Framework/TestCase.php'; 

這是不可能的,你正在使用的版本早於3.5,但我已經提供了,以防萬一。

2

我想你只需要得到PHPUnit的最新版本,不包括任何文件,如下所述。這爲我工作,當我升級到最新版本,但正在運行的老單元測試其中有:

require_once 'PHPUnit/Framework/TestCase.php'; 

刪除此行解決了這一問題。

1

對於那些在更新phpunit到版本6後發佈到這裏。 您將需要重命名類,如: \PHPUnit_Framework_TestCase\PHPUnit\Framework\TestCase

2

對於新PHPUnit的版本,則需要配合使用的幫助use PHPUnit\Framework\TestCase;

老Depricated方式改爲只PHPUnit_Framework_TestCase延長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 { 

} 

如果您不使用這種新方法,您將會遇到困難。採用它,這將解決您的問題。

0

有兩個級別的答案。

的第一個問題,對有些人,是,雖然類名是區分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的傑西)和6.5.5(Debian sid)。編寫phpunit.xml,bootstrap.php等也沒有必要寫入類似的建議。

相關問題