Модульні тести ізолюють тестований компонент, і саме тому часто їх використовують разом із фреймворками Mocks як Mockito: оскільки ізолюють блок від їх залежностей. Будь ласка, зверніть увагу на те, що ви говорите щодо Android API, частково відповідає дійсності, оскільки існують також інструментовані модульні тести , а саме Instrumentation також є частиною пакету Junit , а також класи, які розширюють TestCase як клас AndroidTestCaseє частиною пакету Junit, але дозволяє використовувати A) Context, який ви можете викликати за допомогою getContext () та B) Ресурсів, які є частиною Android API! Також, будь ласка, розгляньте AndroidTestCase як базовий клас, і є ще декілька цілком корисних класів, які розширюють цей клас. Вони тестують спеціально Loaders, ContentProviders і навіть Сервіси, а також вони мають доступ до Android API. отже, ці класи забезпечують структуру тестування JUnit, а також спеціальні методи для Android. Тепер з Junit4 існує ServiceTestRule, яка поширюється безпосередньо від Object і дозволяє вам легше протестувати службу, хоча ви не можете запустити Intent безпосередньо всередині цього класу.
Тести контрольно-вимірювальних приладів вони також входять до пакету Junit, але контроль над Android API є цілком повним, оскільки інструментальні тести створюються в системі перед запуском будь-якого коду програми, і для тестування потрібно відкрити реальну програму (емулятор або телефон підключений через USB). Вони отримують доступ до компонентів Android (наприклад, натисніть кнопку) та життєвого циклу програми, зазвичай вони повільніші, ніж тести Junit, що розширюють TestCase (розглянуті вище), як правило, використання ActivityInstrumentationTestCase2, який має функціональний тестовий підхід, більш орієнтований на користувача.
EDIT: Що стосується Roboelectric та Mockito, які поєднуються з Espresso між найпопулярнішими фреймворками на даний момент (13 липня 2016 р.), Roboelectric дозволяє запускати кілька тестів за секунди, а не за хвилини, і це дуже зручно для команд, які повинні проводити безперервні тести та підлягати постійній інтеграції.
З сайту Robolectric:
Альтернативний підхід до Robolectric - використання макетних фреймворків, таких як Mockito, або макет Android SDK. Хоча це дійсний підхід, він часто дає тести, які по суті є зворотними реалізаціями коду програми. Roboelectric дозволяє тестовий стиль, що наближається до тестування чорних ящиків, роблячи тести більш ефективними для рефакторингу та дозволяючи тестам зосередитись на поведінці програми, а не на реалізації Android. Ви все ще можете використовувати глузувальний фреймворк разом із Robolectric, якщо хочете.
Mockito, який також може використовуватися з Junit, насправді використовується, за винятком випадків, коли доводиться керувати кінцевими класами, анонімними класами або примітивними типами.