私たちのアプリケーションでは、 "ミラーテーブル"(ほぼ同じテーブルのペア)があり、アプリケーションのロジックをテストしてそのミラーテーブルに適切な方法で書き込みを行う必要があります。データベースレベルでしかテストできないように見えます。メソッドの作業結果がデータベースに正しく書き込まれているかどうかをチェックしたいと考えています。 @BeforeClassメソッドで外部トランザクションを開始し、テストケースで作成およびクローズされたネストされたトランザクションにいくつかの変更を加えることができると考えました。したがって、すべてのテストケースで、データベースにロードされた同じ基本データセットと、私たちはちょうどネストされたトランザクションをロールバックします。もちろん、@AfterClassメソッドで外部トランザクションを終了すると、アプリケーションのデータベースに変更が反映されません。AndroidのSQLiteネストされたトランザクションのテスト
Androidはネストされた取引を正しくサポートしていないため、達成できないようです。this answerを参照してください。
多分、データベースに影響を与えずにこの動作をテストする方法がありますか?または、ネストされたトランザクションの回避策がありますか?
ありがとうございます!
Androidのデータベースフレームワークのサポートがうまく入れ子になっています。あなたは他の答えを正しく読まなかった。 –
ネストされたトランザクションは、期待どおりロールバックされません。私はテストしました。たぶん私は何かを逃した... – fobo66
任意の(外側またはネストされた)トランザクションが成功しない場合、トランザクション全体がロールバックされます。それは何が間違っていますか? –