Модульные тесты Android: фиктивный контекст, который также возвращает петлитель - PullRequest
0 голосов
/ 14 марта 2019

Вот мой пример кода:
SomeClass.java

public class SomeClass {
    public SomeClass(Context mContext) {
        final Looper looper = mContext.getMainLooper();
        Handler mHandler = new Handler(looper);
    }
}

SomeClassTest.java

public class SomeClassTest {
    private SomeClass mSomeClass;

    @Mock
    private Context mContext;

    @before
    public void setup(){
        mSomeClass = new SomeClass(mContext);
    }
}

Приведенный выше код генерирует NullPointerException в строке final Looper looper = mContext.getMainLooper(); в SomeClass.
Как я могу настроить фиктивный объект контекста, чтобы избежать этого исключения?

1 Ответ

0 голосов
/ 14 марта 2019

Предполагая, что вы используете Mockito, вы можете добавить фиктивное поведение к фиктивным объектам:

public class SomeClassTest {
    private SomeClass mSomeClass;
    private Looper mLooper;

    @before
    public void setup(){
        mLooper = mock(Looper.class);
        Context ctx = mock(Context.class);
        when(ctx.getMainLooper()).thenReturn(mLooper);
        mSomeClass = new SomeClass(mContext);
    }
}
...