前回の続き
http://qiita.com/kojimamasahiro/items/bc65d1a39075ccc1e87b
相変わらずこちらを読んで燃え尽きる
https://developer.android.com/training/testing/unit-testing/local-unit-tests.html
前回はesspressoを使って、viewの操作に関するテストでした。
今回はmockitoを使って、スタブを作りロジックが正しく値を返却するかのテストです。
インストール
depences {
// mockiot
testCompile 'org.mockito:mockito-core:1.10.19'
}
テストファイルはtestディレクトリ以下に置きます。
使い方
こちらを読むといいかと思います。
https://static.javadoc.io/org.mockito/mockito-core/2.2.25/org/mockito/Mockito.html
verifyメソッドで確認
// リストをつくって
List mockedList = mock(List.class);
// 追加して
mockedList.add("one");
// oneを追加したか確認
verify(mockedList).add("one");
// one以外だとエラー
verify(mockedList).add("two");
このとき、こうする
// オブジェクトをつくって
LinkedList mockedList = mock(LinkedList.class);
// 0番目を取得したとき、
when(mockedList.get(0))
// firstを返す(.でつなぐ)
.thenReturn("first");
// assertでテスト
assertThat(mockedList.get(0), is("first"));
既存のobjectのmethodを一部だけ変更
// listのmethodを変更する
List list = new LinkedList();
// spyを使う
List spy = spy(list);
// size()のmethodを100が返るように変更
when(spy.size()).thenReturn(100);
// 100が返る
System.out.println(spy.size());
// addなどのmethodはそのまま使える
spy.add("hoge");
// addが表示される
System.out.print(spy.get(0));
おわりに
次回はそろそろRobolectricに手を出してみたい。