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使えるアルヨ。