我一直試圖使用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的例子,而不是如何在一個測試套件是一個套件的成員時不同,而不是獨立(可能是由於我不熟悉單元測試的語言)。
我們從SimpleTest的切換到PHPUnit的,因爲SimpleTest的被放棄,PHPUnit的工作方式類似於其他的xUnit項目。我強烈建議你也這樣做,特別是因爲你剛開始時並不需要重寫舊的測試。我們重寫了舊的測試,但仍然值得。我們從不回頭... –
我同意David的觀點,如果您有選擇使用PHPUnit。我用SimpleTest的模擬對象遇到了很多問題。 –
很老了,但我最終切換到了PHPUnit!在某些方面有更陡的學習曲線,但沒有人會說它不能正常工作!那麼,我希望不是! ;-) – ThomasRedstone