DB へのデータの書き込み中に例外が発生した場合、失敗する前に 5 回再試行する必要がある機能を実装しています。機能を実装しましたが、arquillian テストを使用してテストできません。
JPAとVersantをデータベースとして使用しています。これまで、私は arquillian テストをデバッグしており、フローが DB ハンドラー コードに到達したら、データベースを停止しています。しかし、これは最悪のテスト方法です。
同じことを達成する方法について何か提案はありますか?
DB へのデータの書き込み中に例外が発生した場合、失敗する前に 5 回再試行する必要がある機能を実装しています。機能を実装しましたが、arquillian テストを使用してテストできません。
JPAとVersantをデータベースとして使用しています。これまで、私は arquillian テストをデバッグしており、フローが DB ハンドラー コードに到達したら、データベースを停止しています。しかし、これは最悪のテスト方法です。
同じことを達成する方法について何か提案はありますか?
ネイティブ ソリューション
データベースにはゼロで除算するという古いトリックがあります。選択時に、次のことを試すことができます。
select 1/0 from dual;
挿入時間 (テーブルが必要です):
insert into test_table (test_number_field) values (1/0);
純粋な JPA ソリューション
アノテーションを利用して、@Version
それをデクリメントして throwすることができOptimisticLockException
ます。これはデータベースではなく、Java レイヤーでスローされますが、ニーズを満たします。
これらはすべて、DB の失敗につながります。