2016-11-16 18 views
0

SQLiteで動作するメソッドが異なるクラスがあります。それらにはadd,remove,updateなどがあります。私はJUnitを使用していくつかのテストを実行しようとしています。問題は、テストがランダムな順序で実行されることです。したがって、addの前にremoveメソッドを試してみることになりますが、これは必ず失敗します。この種のテストを実行するには、どのような方法が適していますか?SQLiteでJUnitテストを正しく実行する方法

答えて

1

私はテストが実行順序に依存すべきではないと思います。私がこの問題に直面するなら、準備されたデータベース(よく定義された状態を持つ)で各テストを開始しようとします。

あなたが定義できる状態に基づいて、たとえば、各テストの一部であるアサーションたとえば、addは、アイテムがまだ格納されていない場合は、データベースアイテムのサイズを増やす必要があります。 removeの場合、アイテムが含まれていればサイズが小さくなります。

@Before@Afterアノテーションを使用できます。それらをデータベース(テーブル)の準備に使用するメソッドに追加します。

1

開始時のビルドdbは、本番環境(例えば飛行路)上に構築されたのと同じ方法です。 @Beforeを使用してデータベースをリセットします。すべてのテーブルを切り捨て、シーケンスをリセットします。 addをテストする場合は、おそらく何も必要ありません。アイテムを追加して後でフェッチするだけです。このテストに必要なデータを準備するには、それぞれのテストで 'given'フェーズを使用します。一意のインデックスをテストする場合は、同じキーを2回追加し、2回目の挿入後に必要なエラーがあると主張します。もしあなたがremoveをテストしたら、既に(addをテストした)項目を挿入し、それがデータベースにないことをアサートしてください。

+0

'@ BeforeClass'を使って私がリセットして' .db'に必要なすべてのデータテスト。 –

関連する問題