PHPunitはsetupメソッドの例外を無視します

exception installation php phpunit
PHPunitはsetupメソッドの例外を無視します

PHPUnitは、 `setUp()`メソッドでスローされた例外を無視し、セットアップ関数が例外をスローした場合でもテストを実行するだけであることに気付きました。

以下のコードでは、例外は無視され、その下のコードは実行されず、未定義の変数を使用しているため `test_method`は失敗します。

protected $a;

public function setUp() {
    parent:setUp();
    throw new Exception(); // setup now exits silently.
    $this->a = new A(); // will never run
}

public function testA() {
    $this->assertTrue($this->a->something()); // will exit tests with PHP error, because $this->a === null
}

CLIでphpunit.xml構成ファイルを使用してphpunitを実行しています。

PHPunitが例外を報告し、testCaseの実行を停止する方法を知っている人はいますか?

  3  0


ベストアンサー

ここで例外をスローするのは正しい方法ではありません。PHPUnitには特別なメソッドがあります。

markTestSkipped(
              'The MySQLi extension is not available.'
            );
        }
    }

    public function testConnection()
    {
        // ...
    }
}
?>

3


レポデュースできません

スクリプトを実行すると(以下の完全な例)、例外を含むエラー出力が生成されます。

他の場所に問題があるのでしょうか、それとも古いphpunitバージョンに問題があるのでしょうか? それでも、私はそのコードの一部の変更を認識していません。

また、トランクからphpunitを実行する可能性がありますか? ( “3.6”)その場合、 `” Exception “`クラスの処理が変更されたため、今はそのケースをテストできませんが、それが当てはまる場合はInvalidArgumentException()(テストのみ)を使用して、それは物事を変えます。

phpunit test.php
PHPUnit 3.5.13 by Sebastian Bergmann.

E

Time: 0 seconds, Memory: 3.00Mb

There was 1 error:

1) FooTest::testA
Exception: hi

/home/.../test.php:10

FAILURES!
Tests: 1, Assertions: 0, Errors: 1.

” ” ‘

コードを実行可能にしました:

a = new A(); //will never run
    }

    public function testA(){
        $this->assertTrue($this->a->something()); //will exit tests with PHP error, because $this->a === null
    }

}

2


タイトルとURLをコピーしました