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

山下寛人オフィシャルブログ

オイシックス株式会社 執行役員 システム本部長 山下寛人の公式ブログです。

今日の技術的なラーニング

ブログ
finalのクラスはmockitoでmockにできない。実行時にエラーになる。

Realmを使うとRobolectricでテストできない。エラーになる。finalのクラスなのでmockにもできない。Realmのサイトにも明記されていて、Robolectricへの対応リクエストを促すようなリンクが貼ってある。

OllieはRobolectricでテストできた。Fromクラスがfinalになっていてやっぱりmockにできない。

Realmは企業がやっていていずれ有料オプションなどが出てきそう。その分製品の完成度は高くなりそう。今はまだバージョン0台でいろいろ未完成な感じがある。Ollieは個人製作でコンパクト。

Java8のmethod referenceは好感度大。

@OnClick(R.id.cartButton)
void cartButtonClick() {
 Log.d("MAIN", "cartButtonClick");
 Cart cart = create(Cart.class);
 cart.add("tomato")
 .subscribeOn(Schedulers.newThread())
 .observeOn(AndroidSchedulers.mainThread())
 .subscribe(
 this::onNext,
 this::onError,
 this::onComplete
 );
}

private void onNext(String s) { }
private void onError(Throwable throwable) { }
private void onComplete() {
 Log.d("MAIN", "callback");
 cartMessage.setText("カートに追加しました");
}

コロンが2つ並んでいるところは本来コールバックメソッドがあるクラスが入るところですが、そのコールバックメソッドだけを別メソッドにして呼び出すようにできます。無名クラスを書くよりコード量が減り、見やすく、ラムダ式よりネストを浅くできます。ButterKnifeも併用しているのでさらにネストが浅くできています。