Application.getContext()返回null

时间:2019-07-08 10:14:45

标签: android android-context android-testing robolectric

您好,我正在实现SDK,并且需要一些代码的上下文,因此,为了访问上下文,我在Application类中实现了这一点:

public class SDKApp extends Application {

    private static SDKApp sdkContext;

    public static Context getContext() {
        return sdkContext;
    }

    @Override
    public void onCreate() {
        super.onCreate();

        sdkContext = this;

    }

}

为了进行测试,我使用的是Robolectric,但是上下文返回的是空值:

@RunWith(RobolectricTestRunner.class)
public class CallTest {

    private Context context = RuntimeEnvironment.application;

    @Test
    public void emailAuthenticationSuccessfulTest() {
        if (BuildConfig.FLAVOR.equals("dev")) {

            Context context = SDKApp.getContext();

            assertNotNull(context);
        }
    }
}

对此有一些想法吗?

谢谢

2 个答案:

答案 0 :(得分:1)

像这样将您的SDKApp类添加到清单应用程序标记中

<application
        android:name="SDKApp" // your complete package path to your SDKApp
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">

答案 1 :(得分:1)

确保您的SDKApp

一样在AndroidManifest.xml中注册
<application
    android:name="SDKApp"

然后您可以致电SDKApp.getContext(),否则您总是从SDKApp.getContext()获得空值

谢谢。