0

私が書いているテスト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 時間かかります。復元、破棄の目的は、テストのために追加したデータを削除して、テストを実行するたびにデータベースを復元する必要がないようにすることです

4

0 に答える 0