如何从Java项目中获取Junit测试的Android上下文?

jax*_*jax 13 android

我需要访问JUnit Test的Android上下文.

我尝试过使用MockContext并扩展AndroidTestCase,但每次我收到错误说(存根!)

Fre*_*lin 23

那么使用AndroidTestCase而不是JUnit测试呢?AndroidTestCase将提供一个带有getContext()的Context,可以在需要的地方使用.

  • AndroidTestCase现已弃用. (7认同)

Kub*_*tny 5

从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));
    }
}
Run Code Online (Sandbox Code Playgroud)


ogn*_*ian -1

每个Activity都是Context的子类,所以当你需要Context时你必须使用你的Activity。类 Context 不是您从应用程序实例化的东西。