Mockitoを使用してテストボタン機能を試してみました。コードには、Layout/SampleActivity/UnitTest の主要なコンテンツが含まれます。
レイアウト ファイルの定義:
android:text="testbtnmock"
android:id="@+id/btn_testbtnmock"
android:onClick="testBtnMock"
SampleActivity ファイルの定義
public void testBtnMock(View view) {
System.out.println("value:"+getInt());
}
public int getInt(){
return 0;
}
UnitTest ファイルの定義
@RunWith(RobolectricGradleTestRunner.class)
@Config(constants = BuildConfig.class)
public class SampleActivityTest {
private SampleActivity sampleActivity;
private Button testBtnMock;
@Before
public void setUp() {
ShadowLog.stream = System.out;
}
@Test
public void testBtnMock() {
sampleActivity = Robolectric.setupActivity(SampleActivity.class);
SampleActivity spySampleActivity = spy(sampleActivity);
when(spySampleActivity.getInt()).thenReturn(100);
//spySampleActivity.testBtnMock(mock(View.class)); //it is working , print 100
testBtnMock = (Button) sampleActivity.findViewById(R.id.btn_testbtnmock);
testBtnMock.performClick(); //it is not work , print 0 ,mock invalid
}
}
私の質問は次のとおりです。
spySampleActivity.testBtnMock(mock(View.class));
の機能をトリガーするために使用する理由testBtnMock(View v)
。それは機能しており、100を印刷します。- しかし、使用
testBtnMock.performClick();
は機能せず、0 が出力されます。なぜですか? 修正方法は?</li>