0

您好我有以下项目结构

--App
   |--SDK1
   |--SDK2

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

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

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

问题是当我尝试执行以下代码时,我总是得到空值:

@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);
        ...

知道为什么会发生这种情况,如何解决?

4

1 回答 1

1

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

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

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

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

EDIT2:确保SDK1MultiDexApplication". Add this @Config(manifest=Config.NONE, application = App.class, sdk = 17)` 扩展到测试类的顶部。

让我知道它是否有效。

于 2019-07-19T11:27:31.967 回答