Robolectric不调用Application.onCreate(),并且我无法获取上下文

时间:2019-07-19 11:00:40

标签: android android-context robolectric android-application-class

你好,我有以下特征结构

--App
   |--SDK1
   |--SDK2

在应用程序中,我进行了一些检查SDK1和SDK2的测试。

在SDK中,我只有一个单例模式,只能通过App中的应用程序类来设置上下文。

上下文在App.Application.onCreate的SDK1.singleton中设置

问题在于,当我尝试执行以下代码时,我总是会得到null:

@RunWith(RobolectricTestRunner.class)
public class CallTest {

    @Before
    public void setUp() throws Exception {}

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

            Context context = SDK1.getInstance().getContext();

            assertNotNull(context);
        ...

任何想法为什么会发生这种情况,以及如何解决?

1 个答案:

答案 0 :(得分:1)

这不是在Android中使用robolectric获取应用上下文的推荐方法。您可以使用以下代码进行活动...

Activity activity = Robolectric.setupActivity(MyActivity.class);

要获取应用上下文,只需调用activity.getApplicationContext()

  

EDIT1 :如果您使用的是最新的Robolectric版本,请使用   改为Robolectric.buildActivity(DashboardActivity.class)

     

EDIT2 :确保将SDK1扩展MultiDexApplication". Add this @ Config(manifest = Config.NONE,application = App.class,sdk = 17)   测试课程的顶部。

让我知道它是否有效。