私はdbとRobolectricにSugar ORMを使って単体テストを行っています。 RobolectricでSugar ORMを使用するには、thisの質問に従ってください。シュガーORMは、ユニットテスト中に毎回レコードを保存する必要がありますか?
私は以下のコードをstartEverTestSugarAppAsFirstメソッドに入れて実行します。
new PersonHandler(new Activity()).insertPeople();
Person p = Person.findById(Person.class, 1);
System.out.println(p.getName());
最初のレコードの名前が印刷されます。ここまでは順調ですね。
しかし、もし私が//new PersonHandler(new Activity()).insertPeople();
をコメントアウトして再度実行すると、レコードは返されず、NULLポインタの例外が与えられます。私は、シュガーORMは最初の実行時にどこかにレコードを格納し、私は2回目にこれらのレコードにアクセスできると思った。
一方、メインアクティビティののコードを以下のように配置すると、メソッドが作成され、2番目の実行で最初の行がコメントアウトされ、最初のレコードがログに出力されます。
new PersonHandler(this).insertPeople();
Person p = Person.findById(Person.class, 1);
Log.v("person", p.getName());
したがって、ユニットテスト終了後、Sugar ORMはdbを削除しますか?またはどこにデータベースを保存するので、私はそれを何度も何度も使うことができますか?
を実行される順序に依存しないを実行する必要があり、良いことです。 robolectic unit testのコマンド。特定のdbパスでsugar ormを接続する方法はありますか? – orkan
http://stackoverflow.com/questions/24225541/android-sugar-orm-with-existing-db-custom-file-path –
私はこの投稿を知っています。しかし答えはエミュレータがアクセスできる/ data/data/...フォルダにローカルdbをコピーすることです。私は単体テストにローカルDBを使う必要があります。私はすでに/ data/data/...の場所にdbを持っているからです。しかし、ユニットテストの砂糖ormコードは、この場所を見てそれを使用していません。 – orkan