0

リポジトリの更新操作をテストしています

@Test

    public void updateStatusByEmailWithEmailCustomer()
    {
        customerQuickRegisterRepository.save(standardEmailCustomer());

        assertEquals(CUST_STATUS_EMAIL,customerQuickRegisterRepository.findByEmail(CUST_EMAIL).getStatus());

        customerQuickRegisterRepository.updateStatusByEmail(CUST_EMAIL,STATUS_EMAIL_VERFIED ); 

        assertEquals(STATUS_EMAIL_VERFIED,customerQuickRegisterRepository.findByEmail(CUST_EMAIL).getStatus());
    }

テスト ケースでは、エンティティをデフォルトのステータスで保存し、その後 updateStatusByEmail(CUST_EMAIL,STATUS_EMAIL_VERFIED ) を使用してエンティティを別のステータスに変更していますが、次の assert ステートメントが失敗しています。これは、テスト実行中の更新が後にコミットされるという事実によるものです。テストの完了....テスト内で変更をコミットする方法はありますか?

4

1 に答える 1

1

基礎となる Hibernateをフラッシュすることでうまくいく可能性がありSessionます。これにより、(現在のテスト管理トランザクション内で) データベース内の基礎となるテーブルに変更がプッシュされるためです。

詳細については、Spring リファレンス マニュアルのテストの章で「誤検知」を検索してください。

基本的に、更新呼び出しの後、対応するアサーションの前にflush()現在のHibernateを呼び出す必要があります。Session

それでも問題が解決しない場合は、Spring Framework 4.1 を使用して、テスト内のプログラムによるトランザクション管理TestTransactionに新しいAPI を使用できます。

よろしく、

サム(spring-testモジュールのリーダー)

于 2014-09-20T22:27:23.263 に答える