Mockitoを使ったTextViewのテストについて
Androidで次のようなプログラムを作成しテストしようとしています。
テスト対象のクラス
public class Sample {
public void errorCheck(TextView textView) {
if (textView.getText().toString().equals("")) {
textView.setError("入力してください");
}
}
}
テストクラス
public class SampleTest {
@Rule
public MockitoRule mockito = MockitoJUnit.rule();
@Mock
private TextView mockTextView;
@Test
public void test() {
when(mockTextView.getText()).thenReturn("");
assertThat(mockTextView.getError().toString(), is("入力してください"));
}
}
テストを実行すると(当然ですが)mockTextView.getError()がnullのため、NullPointerExceptionが発生します。
テストクラスでsetErrorされたことを確認したいため、次のようなモックは避けたいと考えています。
when(mockTextView.getError()).thenReturn("入力してください");
SampleクラスのsetErrorメソッドで「入力してください」と入力されたことをテストする方法はあるでしょうか?
今回は実機やエミュレーター上でのテストは重いので、できればそういったものを使わないようにテストしたいと思っています。