Realmのテストのやり方を知りたい
Realmを使ってみました。ちなみに私は、今まではGreenDAOとAndroid Ormaしか使ったことがありません。
とりあえずCRUD操作のやり方をつかもうとテストを書いてみました。テストの書き方が根本的に間違っている可能性が無きにしもあらずですが、こんな感じで作りました。
public class FilterDataSourceRealmTest {
private static RealmConfiguration config;
private static FilterDataSourceRealm sut;
@BeforeClass
public static void initializeTest() {
config = new RealmConfiguration.Builder()
.name("test_realm")
.deleteRealmIfMigrationNeeded()
.build();
sut = new FilterDataSourceRealm(config);
}
@Before
public void setUp() {
Realm.deleteRealm(config);
}
@After
public void tearDown() {
Realm.deleteRealm(config);
}
@Test
public void insertFilter() throws Exception {
final CountDownLatch latch = new CountDownLatch(1);
sut.insertFilter("test.com/");
sut.getFilter("test.com/")
.subscribe(new Action1<UriFilter>() {
@Override
public void call(UriFilter uriFilter) {
assertThat(uriFilter.getFilter(), is("test.com/"));
latch.countDown();
}
});
latch.await(2, TimeUnit.SECONDS);
}
}
テスト対象のコード(一部抜粋)はこんな感じです。
public class FilterDataSourceRealm implements FilterDataSource {
private RealmConfiguration config;
public FilterDataSourceRealm(RealmConfiguration config) {
this.config = config;
}
@Override
public void insertFilter(String insert) {
Realm realm = Realm.getInstance(config);
realm.beginTransaction();
realm.copyToRealmOrUpdate(new UriFilter(insert));
realm.commitTransaction();
realm.close();
}
このテストコードはandroidTestに配置して実機で実行します(Instrumentation Test)。
