1

いくつかのテスト ケースを作成しましたが、PHPUnit で試してみたいと思っています。しかし、うまくいきません。実行すると、次のようphpunit CategoryTestに出力されます。

PHPUnit 3.7.14 by Sebastian Bergmann.

実行するとphpunit --log-json error.log CategoryTest、error.log ファイルに次のように表示されます。

{"event":"suiteStart","suite":"CategoryTest","tests":5}  
{"event":"testStart","suite":"CategoryTest","test":"CategoryTest::test__construct"}

そのため、ファイルに 5 つのテストがあることがわかり、最初のテストを実行し始め、理由もなく停止します。実行を継続しない理由を見つけることができるログはありますか? また、たとえば、他のファイルでテストを実行するとphpunit --log-json error.log UserTest、シェルは出力を表示せず、error.log ファイルも表示しません。

他の同様の質問の1つで提案されているように、再インストールを試みましたが、何もしませんでした。

どうすれば修正できますか?

require_once '../Category.class.php';
require_once '../../db_connect.php';
require_once 'PHPUnit/Framework/TestCase.php';

class CategoryTest extends PHPUnit_Framework_TestCase {

private $Category;

protected function setUp() {

    parent::setUp ();
    $this->Category = new Category(0, $mdb2);

}

protected function tearDown() {
    $this->Category = null;
    parent::tearDown ();
}

public function __construct() {

}

public function test__construct() {

    $this->markTestIncomplete ( "__construct test not implemented" );

    $cat = $this->Category->__construct(0, $mdb2);

    $this->assertInstanceOf('Category', $cat);
}

public function testReturnID() {

    $this->markTestIncomplete ( "returnID test not implemented" );

    $id = $this->Category->returnID();

    $this->assertEquals(0, $id);

}
  ...
}

変数$mdb2は db_connect.php ファイルから取得されます。

私はそれを考え出した。問題は、クラスの外部から変数を含めたことです。

4

1 に答える 1

1

TestCase で __construct() メソッドを上書きしないでください。コンストラクターは、モック ジェネレーターとその他のテスト用の必須事項をセットアップするため、コンストラクターを上書きすると、多くの奇妙な動作と望ましくない副作用が発生します。setUp() メソッドは、テストの初期化に使用する特別なメソッドです。

于 2013-02-24T11:27:10.227 に答える