你好,我有以下特征结构
--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);
...
任何想法为什么会发生这种情况,以及如何解决?
答案 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) 测试课程的顶部。
让我知道它是否有效。