Intereting Posts
Не хотите, чтобы мягкая клавиатура автоматически показывалась при запуске – Android Изменить цвет растрового изображения Android: Как вызвать onTouch только после onLongClick? Ошибка Eclipse DDMS «Невозможно связать с локальным 8600 для отладчика» Как передать ключ Arraylist на сервер с помощью GSON (Serilized («image»)) Найти фрагмент по имени тега в контейнере Поддержание / сохранение / восстановление позиции прокрутки при возврате в ListView Как центрировать изображение на экране с помощью FrameLayout? (С кодом Java) Как показать и удалить диалоговое окно прогресса Android Как установитьText из отдельного потока в Android Фрагменты Отсоединение / Повторная установка Vs Show / Hide Видео приостановка с ошибкой «Несанкционированное наложение» Android AudioRecord – не будет инициализировать второй раз Удален файл debug.keystore. Как мне сгенерировать его снова? Gradle – Android Studio строит слишком медленное приложение с несколькими приложениями

Как вы получаете Android-контекст для теста Junit из Java-проекта?

Мне нужно получить доступ и контекст Android для теста JUnit.

Я пробовал использовать MockContext и расширять AndroidTestCase, но каждый раз, когда я получаю сообщение об ошибке (заглушка!),

Как насчет использования AndroidTestCase вместо теста JUnit? AndroidTestCase предоставит контекст с getContext (), который можно использовать там, где это необходимо.

Другой способ доступа к контексту из JUnit без расширения AndroidTestCase – использовать Rule для запуска тестируемой активности. Правила – это перехватчики, которые выполняются для каждого метода тестирования и будут выполняться перед любым из вашего кода установки в методе @Before . Правила были представлены в качестве замены для ActivityInstrumentationTestCase2 .

 @RunWith(AndroidJUnit4.class) @SmallTest public class ConnectivityTest { @Rule public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule<>(MainActivity.class); @Test public void testIsConnected() throws Exception { Context context = mActivityRule.getActivity().getBaseContext(); ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); boolean connected = cm.getActiveNetworkInfo().isConnectedOrConnecting(); Assert.assertEquals(connected, ConnectionUtils.isConnected(context)); } } 

Попробуйте это для случая, когда ваш тестовый класс расширяет ActivityInstrumentationTestCase2:

 InputStream is = null; try { is = getInstrumentation().getContext().getAssets().open("your.file"); } catch (IOException e) { Log.d("Error", "Error during file opening!!!"); } 

Если ваш тест – это контрольно-измерительный тест (работает на эмуляторе или устройстве), вы можете просто использовать

 Context appContext = InstrumentationRegistry.getTargetContext(); 

Зависимость:

 androidTestCompile 'com.android.support.test:runner:0.5' 

Каждое действие является подклассом контекста, поэтому вы должны использовать свои действия, когда вам нужен контекст. Контекст класса – это не то, что вы создаете из приложения.