2016-07-06 4 views
0

Я пытаюсь создать некоторые тесты JUnit для моего приложения для Android.Mocking android method in Junit test

В приложении я следующий метод, который я пытаюсь получить испытанной:

public void checkBoxAction(View v) { 
    CheckBox cb = (CheckBox) v; 
    Boolean isChecked = cb.isChecked(); 
    //Do stuff 
} 

Я использую Mockito и я получил это далеко:

// ... 
CheckBox dummyV = new CheckBox(mMockContext); 
Mockito.when(dummyV.isChecked()).thenReturn(true); 
item.checkBoxAction(dummyV); 
// ... 

Но когда я бегу тест я получаю сообщение об ошибке:

java.lang.RuntimeException: Method isChecked in 
android.widget.CompoundButton not mocked... 

Я думаю, что проблема в том, что в методе checkBoxAction, тем isChecked метод не выполнен на v, но на другом объекте. Правильно ли это предположение? Это проблема? И как я могу это исправить? Или что-то еще?

+0

Try 'CheckBox dummyV = издеваться (CheckBox.class);' –

+0

Да, это работает! Благодаря! – Jeni

+0

ok, добавлено в качестве ответа. Если он работает, отметьте его как принятый –

ответ

1

Вы должны дразнить CheckBox, если вы хотите использовать Mockito.when, попробуйте:

CheckBox dummyV = mock(CheckBox.class);