Макет метода с помощью инструментального модульного теста - PullRequest
0 голосов
/ 19 декабря 2018

Я запускаю тест Expresso, и у меня есть требование смоделировать метод с контекстом в качестве параметра.Этот код находится в onStart() фрагмента запуска.Поскольку я запускаю тестовый сценарий в эмуляторе, мне нужно смоделировать метод isBLESupported, чтобы он возвращал значение true перед запуском фрагмента.Код ниже написан в методе onStart.

BreatheMapperUtils utils = new BreatheMapperUtils();
if (utils.isBLESupported(getActivity())) {
    startSyncProcess();
} else {
    //TODO does not run on emulator 
    showNotificationAlert(getString(R.string.ERROR), getString(R.string.BLE_NOT_SUPPORTED), "Ok");
}

Вот мой подход к Mock методу до запуска фрагмента.Но я вижу, что контрольные примеры выполняют реальный код и макет не работает.

@Before
public void setup() {
    mContext = mActivityTestRule.getActivity();
    BreatheMapperUtils utils = mock(BreatheMapperUtils.class);
    when(utils.isBLESupported(mContext)).thenReturn(true); 
    // launch the fragment
}

Но макет все еще не удался.Пожалуйста, помогите, если у вас есть какие-либо мысли.Можно ли издеваться над методом с контекстом?Я прочитал некоторую документацию и там говорится, что мы не можем использовать Power Mockito с тестовым набором Expresso.

1 Ответ

0 голосов
/ 19 декабря 2018

Возможно, потому что вы создаете новый экземпляр BreatheMapperUtils в вашем onStart.Макет действует только в том случае, если вы используете его в методе настройки.

...