2011-09-29 108 views
1

即使我已经包含了TestCase类?为什么我得到这个错误?致命错误:未找到'TestCase'类

<?php 

require_once("PHPUnit/Autoload.php"); 
require_once("PHPUnit/Framework/TestCase.php"); 
require_once("PHPUnit/Framework/TestSuite.php"); 

class WidgetSession { 
    public function __construct($one, $two){} 
    public function login() {} 
    public function isLoggedIn() {return null;} 
    public function getUser(){ 
     return new WidgetUser(); 
    } 
} 

class WidgetUser{ 
    public $first_name = ""; 
    public $last_name = ""; 
    public $email = ""; 

    public function isSalesPerson() {return null;} 
    public function isSalesManager() {return null;} 
} 

class TestWidgetSession extends TestCase { 

    private $_session; 
    function setUp(){ 
     $dsn = array(
      'phptype' => "pgsql", 
      'hostspec' => "localhost", 
      'database' => "widgetworld", 
      'username' => "wuser", 
      'password' => "foobar" 
     ); 
     $this->_session = new WidgetSession($dsn, true); 
    } 

    function testValidLogin(){ 
     $this->_session->login("ed", "12345"); 
     $this->assertEqual(true, $this->_session->isLoggedIn()); 
    } 

    function testInvalidLogin(){ 
     $this->_session->login("ed", "54321"); //fail 
     $this->assertEquals(false, $this->_session->isLoggedIn()); 
    } 

    function testUser(){ 
     $user = $this->_session->getUser(); 
     $this->assertEquals("Lecky Thompson", $user->last_name); 
     $this->assertEquals("Ed", $user->first_name); 
     $this->assertEquals("[email protected]", $user->email); 
    } 

    function testAuthorization(){ 
     $user = $this->_session->getUser(); 
     $this->assertEquals("Sales Person", $user->role); 
     $this->assertEquals(true, $user->isSalesPerson()); 
     $this->assertEquals(false, $user->isSalesManager()); 
     $this->assertEquals(false, $user->isAccountant()); 
    } 
} 

$suite = new TestSuite; 
$suite->addTest(new TestWidgetSession("testValidLogin")); 
$suite->addTest(new TestWidgetSession("testInvalidLogin")); 
$suite->addTest(new TestWidgetSession("testUser")); 
$suite->addTest(new TestWidgetSession("testAuthorization")); 
$testRunner = new TestRunner(); 
$testRunner->run($suite); 
?> 
+0

也许有错误TestCase.php –

+0

uuh,[通常你通过PEAR安装PHPUnit](http://stackoverflow.com/questions/5733309/installing-phpunit-and-examples/5733579#5733579),然后它的一切都在你的包含路径中,然后你根本不需要它。 – Gordon

+2

真的很高兴看到人们实际测试他们的代码。作为一个整体,PHP社区在编写结构化代码方面通常很糟糕,而且更糟的是测试它。 –

回答

5
require_once("PHPUnit/Framework/TestCase.php"); 

这个文件肯定会不含有TestCasePHPUnit_Framework_TestCase任何定义。注意并使用正确的类名。

我假设同样适用于:

require_once("PHPUnit/Framework/TestSuite.php"); 

这是PHPUnit_Framework_TestSuite而不是TestSuite

而且您只需要/包含自动加载器,这对于PHPUnit的类就足够了。

+0

@Jonny:不客气。 – hakre

相关问题