2

SimpleTest for PHPでいくつかの簡単なテストを実行しようとすると、エラーが発生します。

現在、ドキュメントに従ってクラス UnitTestCase を拡張しています。メソッド内でクラスのさまざまな側面をテストしようとしています。これが私のクラスです:

<?php
class SimpleClass extends UnitTestCase {

    public function __construct() {
        $this->test();
    }

    private function test() {
        $x = true;
        $this->assertTrue($x, 'x is true');
    }
}

TestSuite クラスを拡張し、ドキュメントの構文を使用しようとしましたが、同じエラーが発生しました:

Fatal error: Call to a member function getDumper() on a non-object in /simpletest/test_case.php on line 316

これを行う方法についてのアイデアはありますか、それともクラステストに間違って取り組んでいますか?

4

1 に答える 1

7

テストでコンストラクターを使用しないでください。

SimpleTest では、メソッドを持つクラスを作成できます。それらの名前が「test」で始まる場合、テスト スイートを開始すると呼び出されるテスト メソッドとして自動的に認識されます。

テスト メソッドを呼び出すコンストラクターを作成し、すべてのセットアップを行わずにアサーションを実行したため、SimpleTest には、テスト結果を適切な出力にラップするために必要なレポーター クラスがありません。

チュートリアルを詳しく読むと、テスト スイートのセットアップ方法や単一のテストの開始方法に関するヒントが見つかります。

classes/log.php で Log という単純なファイル ロギング クラスをテストしているとします。まず、tests/log_test.php という名前のテスト スクリプトを作成し、次のように入力します...

ドキュメントからのコード例:

<?php
require_once('simpletest/autorun.php');
require_once('../classes/log.php');

class TestOfLogging extends UnitTestCase {
    function testLogCreatesNewFileOnFirstMessage() {
        $this->assertTrue(true);
    }
}
?>

コンストラクターがないことに注意してください。このファイルが PHP で実行される場合、自動実行ファイルがテストを実行します。

于 2013-10-21T19:41:57.983 に答える