Size: a a a

StartAndroid Ru Testing

2018 December 17

НК

Наталья Казакова in StartAndroid Ru Testing
Добрый день! Гуру тестирования, подскажите как тестировать при архитектуре MVP активити (вью) и адаптеры для списков? Только инструментальными тестами с помощью Espresso получается? Локальные тесты я никак представить себе не могу в этом случае. Разве что как я видела где-то на просторах хабра рекомендацию и на адаптер писать презентер и вью свои...
источник

W

WaterSmith in StartAndroid Ru Testing
Наталья Казакова
Добрый день! Гуру тестирования, подскажите как тестировать при архитектуре MVP активити (вью) и адаптеры для списков? Только инструментальными тестами с помощью Espresso получается? Локальные тесты я никак представить себе не могу в этом случае. Разве что как я видела где-то на просторах хабра рекомендацию и на адаптер писать презентер и вью свои...
Тут вот какая петрушка. Всё, что касается Android SDK вы должны тестировать инструментальными тестами, либо мокать. Так-что правило простое - если есть нужда в тестах использовать  Android SDK, значит это не юнит-тест.
источник

НК

Наталья Казакова in StartAndroid Ru Testing
а будет ли оправдано то, что я писала про отдельный презентер для адаптера?
источник

W

WaterSmith in StartAndroid Ru Testing
Наталья Казакова
а будет ли оправдано то, что я писала про отдельный презентер для адаптера?
Ну т.е. вынести независимый от андроида код в отдельный класс (презентер) и писать тест на него? Да, это нормальное решение.
источник

НК

Наталья Казакова in StartAndroid Ru Testing
очень смущает большое количество классов... когда проект разрастается их становится столько....
источник

W

WaterSmith in StartAndroid Ru Testing
Наталья Казакова
очень смущает большое количество классов... когда проект разрастается их становится столько....
На самом деле должно смущать наличие слишком умелых классов - когда один и тот же класс делает массу разных вещей
источник

НК

Наталья Казакова in StartAndroid Ru Testing
тоже верно. спасибо! попробую такой подход
источник
2018 December 19

P

Pavel in StartAndroid Ru Testing
Всем привет. Коллеги, подскажите. Как написать юнит тест для класса KeyboardUtil. Чтобы проверить скрывается клавиатура или нет

public class KeyboardUtil {

   public static void hideKeyboard(Context context, View view) {
       InputMethodManager inputMethodManager =(InputMethodManager) context.getSystemService(Activity.INPUT_METHOD_SERVICE);
       inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
   }
}
источник

N

Nikolay in StartAndroid Ru Testing
ну, тестировать статик метод не представляется возможным. Если очень хочется - можно попытаться написать Эспрессо тест и проверять что клавиатура не видна. Или Снепшот-тест - где вы будете сравнивать 2 картинки. Но в целом - я бы этого не делал.
источник

W

WaterSmith in StartAndroid Ru Testing
Pavel
Всем привет. Коллеги, подскажите. Как написать юнит тест для класса KeyboardUtil. Чтобы проверить скрывается клавиатура или нет

public class KeyboardUtil {

   public static void hideKeyboard(Context context, View view) {
       InputMethodManager inputMethodManager =(InputMethodManager) context.getSystemService(Activity.INPUT_METHOD_SERVICE);
       inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
   }
}
это юнит-тестом не протестируешь.  То что вам написали про статик, это еще ладно. А вот то что и контекст и вью - это объекты андроид СДК, и в юнит тестах не доступны - серъезное препятствие.
источник

P

Pavel in StartAndroid Ru Testing
WaterSmith
это юнит-тестом не протестируешь.  То что вам написали про статик, это еще ладно. А вот то что и контекст и вью - это объекты андроид СДК, и в юнит тестах не доступны - серъезное препятствие.
только ui тестом можно?
источник

W

WaterSmith in StartAndroid Ru Testing
Вы можете замокать их, и в юнит тесте проверить, что у inputMethodManager был вызван метод hideSoftInputFromWindow с заданными параметрами
источник

W

WaterSmith in StartAndroid Ru Testing
По большому счету этого должно быть достаточно, ведь вы не должны тестировать классы СДК
источник

W

WaterSmith in StartAndroid Ru Testing
А значит, если ваш код вызвал нужные методы, остальное уже вас не касается
источник
2018 December 21

W

WaterSmith in StartAndroid Ru Testing
Что я забыл настроить?
источник

N

Nikolay in StartAndroid Ru Testing
WaterSmith
Что я забыл настроить?
Зависимость?
источник

W

WaterSmith in StartAndroid Ru Testing
Nikolay
Зависимость?
ага, уже разобрался.
источник

W

WaterSmith in StartAndroid Ru Testing
Не хватало зависимости: androidTestImplementation 'androidx.test:rules:1.1.1'
источник

W

WaterSmith in StartAndroid Ru Testing
А также, поскольку androidx.test.runner.AndroidJUnit4 деприкейт, нужно использовать androidx.test.ext.junit.runners.AndroidJUnit4
источник

W

WaterSmith in StartAndroid Ru Testing
а у него еще отдельная зависимость:
androidTestImplementation 'androidx.test.ext:junit:1.1.0'
источник