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

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

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

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

Как насчет использования 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' 

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