Ответ 1
У меня была такая же проблема, и оказалось, что вам нужно создать пользовательский бегун, который позволяет MultiDex и выходит из AndroidJUnitRunner. Затем вам нужно установить этот бегун как ваш testInstrumentationRunner в build.gradle и как ваш бегун в вашей конфигурации запуска. Нет необходимости модифицировать тестовый класс (сохраняйте @RunWith(AndroidJunit4.class)
).
Здесь шаг за шагом, что делать:
-
Создайте класс для своего пользовательского бегуна:
package com.bla.bla.bla; // your package import android.os.Bundle; import android.support.multidex.MultiDex; import android.support.test.runner.AndroidJUnitRunner; public class CustomTestRunner extends AndroidJUnitRunner { @Override public void onCreate(Bundle arguments) { MultiDex.install(getTargetContext()); super.onCreate(arguments); } }
-
В вашем build.gradle установите бегун на свой пользовательский бегун:
android { // ... defaultConfig { // ... testInstrumentationRunner "com.bla.bla.bla.CustomTestRunner" } }
-
В вашей конфигурации выполнения убедитесь, что контрольно-измерительный прибор также настроен на тот же самый бегун.. Примечание. Этот шаг не требуется в Android Studio 3.x и, возможно, также в некоторых предыдущих версиях. Эта опция больше не существует.
Используя вышеизложенное, я смог запустить тесты Espresso в нашем приложении с поддержкой multi-dex.
Я должен отметить, что многие другие сообщения в сети относительно этой темы предлагают установить ваш бегун на com.android.test.runner.MultiDexTestRunner
и исправить некоторые зависимости в com.android.support:multidex-instrumentation:1.0.1
в вашем build.gradle. Это решение больше не имеет места и не работает с gradle 1.5.0. Если у вас есть что-то из этого набора, то это предотвратит работу выше. Подробнее см. Комментарии в этом столбце.