私が書いているテストsetUpBeforeTests
では、データベースに新しい顧客を作成し、それを使用してテストを実行します。テストが終了したら、このテストの顧客を取り除く必要がありtearDownAfterTestClass
ます。テストし、偽陽性を取得しない
テストがすべて正常に実行された場合、問題はありませんが、テストが失敗して再実行すると、setUpBeforeTests
このようにmysqlエラーをチェックするため、失敗します
try
{
if(!mysqli_query($connection,$query))
{
$this->assertTrue(false);
}
}
catch (Exception $exc)
{
$msg = '[tearDownAfterTestClass] Exception Error' . PHP_EOL . PHP_EOL;
$msg .= 'Could not run query - '.mysqli_error($connection). PHP_EOL;;
$this->fail($msg);
}
私が受け取るエラーは、同じデータを使用して新しい顧客を作成しようとしていることが予想される主キー違反があることです (主キーはログインにも使用される電子メールにあります)。ただし、それはテストが失敗したことを意味します動かなかったtearDownAfterTestClass
今、私はすべてをtearDownAfterTestClass
最初に移動することができましたsetUpBeforeTests
が、私には悪いプログラミングのように思えます.tearDownAfterTestClass
だから私は疑問に思っています、なぜtearDownAfterTestClass
テストが失敗したときに実行されないのですか
注: データベースは、私がテストしているシステムの基本的な部分であり、データベースとシステムは、ライブ環境ではなく別の開発環境にあります。データベースのバックアップ ファイルはほぼ 2 GB で、バックアップにほぼ 1/2 時間かかります。復元、破棄の目的は、テストのために追加したデータを削除して、テストを実行するたびにデータベースを復元する必要がないようにすることです