Тестируйте активность Android с другим классом приложения

Я ищу способ протестировать Activity с помощью JUnit4 и ActivityTestRule, но с другим классом приложения (например, mocked или наследуется). Мне удалось получить это для библиотечных проектов, используя манифест слияния и инструменты:replace="android:name" в теге приложения в androidTest/AndroidManifest.xml. Это, однако, не работает для приложений.

Есть идеи, как это можно сделать?

1 ответ

Решение

Вы можете подкласс AndroidJUnitRunner с вашим собственным бегуном и переопределить newApplication() с вашим пользовательским классом приложений.

public class CustomTestRunner extends AndroidJUnitRunner {

@Override
public Application newApplication(ClassLoader cl, String className, Context context) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
    return super.newApplication(cl, CustomTestApplication.class.getName(), context);
}
}

Убедитесь, что обновили свой build.gradle новым бегуном, как это:

testInstrumentationRunner "com.mypackage.name.path.CustomTestRunner"

Другие вопросы по тегам