読者です 読者をやめる 読者になる 読者になる

リア充爆発日記

You don't even know what ria-ju really is.

RobolectricでBase64

AndroidではAPI Level8(Android2.2)からBase64が組み込まれているんだけど、RobolectricにはまだShadowがないっぽい。

・・・と思ったらgithubのmasterには1ヶ月ほど前に取り込まれてたよう。
https://github.com/pivotal/robolectric/pull/326

だけどMavenで管理していると、現時点で最新の最終アップデートは2012年の4月なのでやっぱぼくんとこのRobolectricには入ってないの確定。
これだけのためにcloneしてどうこうするのもめんどくさいので自分でShadowオブジェクトを用意する。

上記リンクで話されているとおり(ドヤァ)、Androidに組み込まれているBase64は、特に外部依存しないPOJOでできているため、Androidのソース探してペロッと持ってくればいいだけなのだ。で、githubのmasterはそうなってるんだけど、同じ事を手元でやる。

プルリクからShadowBase64.javaだけペロッと持ってきて、テストディレクトリの適当なところに置く。

で、こんなのを用意する。

public class ShadowTestRunner extends RobolectricTestRunner {
    public ShadowTestRunner(Class testClass) throws InitializationError {
        super(testClass);
    }

    @Override public void beforeTest(Method method) {
        Robolectric.bindShadowClass(ShadowBase64.class);
    }
}


そして、使うところでRunWithする。

@RunWith(ShadowTestRunner.class)
public class HogeTest {

これでBase64使えるアルヨ。