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)。

Read full post gblog_arrow_right

取り込んだライブラリがapklibとなってうまく参照できない

build.gradleのdependancieesに取り込むライブラリを記述して、目的のライブラリをダウンロードしてきてくれはしたものの、External Librariesで確認すると.apklibという拡張子になっていて、ライブラリの中身が参照できないということがあります。

apklibとなって参照できない

この場合はViewPagerIndicatorというライブラリです。

どうにか使えるようにする方法はないものかと調べてみたのですが、解決策が見つかりませんでした。行き着いたのは、Gradleがapklibという形式をそもそもサポートしていないため、Android Studioでうまく参照できないみたいということです。

こういったライブラリの場合は、ソースコードを引っ張ってくるしか取り込む方法がないんでしょうね・・・。ちょっと残念です。

何かいい方法をご存じの方がいらっしゃったら教えていただきたいです。