そのため、PHPUnit で予期しない例外 (整合性チェックのために db に挿入できないなど) が発生するたびに、テストが失敗し、tearDownAfterClass()
関数を実行せずにエラーが発生します。これにより、データベースが乱雑な状態になるため、手動でクリーンアップする必要があります。tearDownAfterClass()
が常に実行されるようにする方法はありますか?
5068 次
2 に答える
7
tearDownAfterClass
テストメソッドにエラーや失敗があっても、PHPUnit は呼び出します。例外がスローされたときに呼び出されません。setUpBeforeClass
データベースを確実にクリーンアップするには、クリーンアップ コードを、呼び出し元の新しいメソッドtearDownAfterClass
と の catch 句に移動しsetUpBeforeClass
ます。
function FooTest extends PHPUnit_Framework_TestCase
{
static function setUpBeforeClass() {
try {
... setup code that might fail ...
}
catch (Exception $e) {
self::cleanupDatabase();
throw $e; // so the tests will be skipped
}
}
static function tearDownAfterClass() {
self::cleanupDatabase();
}
static function cleanupDatabase() {
... clean ...
}
... test methods ...
}
于 2012-09-03T20:08:27.160 に答える
2
関数をオーバーライドできます
protected function onNotSuccessfulTest(Exception $e)
たとえば;
$this->tearDownAfterClass();
throw $e;
于 2012-09-03T10:55:55.510 に答える