2011-10-05 54 views
1

我一直試圖使用SimpleTest開始單元測試我的代碼,我有一個工作測試,它自己的工作,但我想使用一個單一的目錄,將包含一系列的測試和一個TestSuite將運行所有這些測試中,我的工作測試:PHP SimpleTest - 使用多個測試用例

<?php 
require_once(dirname(__FILE__) . '/../simpletest/autorun.php'); 

define("ROOT",'/var/web/trunk/'); 
require_once('/usr/share/log4php/src/main/php/Logger.php'); 

class TestBayCrazy extends UnitTestCase { 

    function testDatabase() { 
    require_once(ROOT.'includes/libs.inc.php'); 
    $database = new Database(); 
    $this->assertTrue($database->connected == TRUE); 

    $database = new Database('a','b','c','d','e'); 
    $this->assertTrue($database->connected == FALSE); 

    $database = null; 
    } 

} 

我的TestSuite是:

<?php 
require_once(dirname(__FILE__) . '/simpletest/autorun.php'); 

define("ROOT",'/var/web/trunk/'); 
require_once('/usr/share/log4php/src/main/php/Logger.php'); 


class AllTests extends TestSuite { 
    function AllTests() { 
    $this->TestSuite('All Tests'); 
    $this->addFile('tests/testDatabase.php'); 
    $this->addFile('tests/testSession.php'); 
    $this->addFile('tests/testValidate.php'); 
    } 
} 

但這返回運行時執行以下操作:

2011/10/05 12:37:47 [error] 3242#0: *309 FastCGI sent in stderr: "PHP Fatal error: 
Call to a member function getDumper() on a non-object in 
/var/web/trunk/private/simpletest/test_case.php on line 316 PHP Stack trace: PHP 
1. simpletest_autorun() /var/web/trunk/private/simpletest/autorun.php:0 PHP 
2. run_local_tests() /var/web/trunk/private/simpletest/autorun.php:28 PHP 
3. TestSuite-run() /var/web/trunk/private/simpletest/autorun.php:52 PHP 
4. TestSuite->run() /var/web/trunk/private/simpletest/test_case.php:563 PHP 
5. TestSuite->run() /var/web/trunk/private/simpletest/test_case.php:563 PHP 
6. TestSession->testSession() /var/web/trunk/private/simpletest/test_case.php:559 PHP 
7. UnitTestCase->assertIsA() /var/web/trunk/private/tests/testSession.php:10 PHP 
8. SimpleTestCase->assert() /var/web/trunk/private/simpletest/unit_tester.php:110" 
while reading response header from upstream, client: 0.0.0.0, 
server: example.com, request: "GET /private/unittest.php HTTP/1.1", 
upstream: "fastcgi://127.0.0.1:9001", host: "0.0.0.0 

那麼,我究竟做錯了什麼?我只找到了如何做testSuite的例子,而不是如何在一個測試套件是一個套件的成員時不同,而不是獨立(可能是由於我不熟悉單元測試的語言)。

+2

我們從SimpleTest的切換到PHPUnit的,因爲SimpleTest的被放棄,PHPUnit的工作方式類似於其他的xUnit項目。我強烈建議你也這樣做,特別是因爲你剛開始時並不需要重寫舊的測試。我們重寫了舊的測試,但仍然值得。我們從不回頭... –

+0

我同意David的觀點,如果您有選擇使用PHPUnit。我用SimpleTest的模擬對象遇到了很多問題。 –

+0

很老了,但我最終切換到了PHPUnit!在某些方面有更陡的學習曲線,但沒有人會說它不能正常工作!那麼,我希望不是! ;-) – ThomasRedstone

回答

0

我們實際使用的,而不是一個套房GroupTest

$dbgroup = new GroupTest("running database tests"); 
$dbgroup->addTestFile('tests/testDatabase.php'); 
$dbgroup->run(new HtmlReporter()); 

它的工作不夠好......

+0

謝謝@case,我最終放棄了SimpleTest,但我將你的答案標記爲正確,因爲它很有意義,我相信你! :-) – ThomasRedstone

相關問題