2011-10-05 139 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

相关问题