Robolectric 没有调用 Application.onCreate(),我无法获取上下文
Robolectric dosen't calling Application.onCreate(), and I cannot get context
你好我有以下项目结构
--App
|--SDK1
|--SDK2
在应用程序中我有一些检查 SDK1 和 SDK2 的测试。
在 SDK 中,我有一个单例模式,仅用于通过 App.
中的应用程序 class 设置上下文
并且上下文设置在SDK1.singleton中App.Application.onCreate
问题是,当我尝试执行以下代码时,我总是得到 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);
...
知道为什么会发生这种情况吗?如何解决?
这不是使用 robolectric 在 Android 中获取应用上下文的推荐方法。您可以使用以下代码获取 activity...
Activity activity = Robolectric.setupActivity(MyActivity.class);
要获取应用上下文,只需调用 activity.getApplicationContext()
。
EDIT1: If you're using the latest Robolectric version, use
Robolectric.buildActivity(DashboardActivity.class)
instead.
EDIT2: Make sure your SDK1
extends MultiDexApplication". Add this
@Config(manifest=Config.NONE, application = App.class, sdk = 17)` to
the top of your test class.
如果有效请告诉我。
你好我有以下项目结构
--App
|--SDK1
|--SDK2
在应用程序中我有一些检查 SDK1 和 SDK2 的测试。
在 SDK 中,我有一个单例模式,仅用于通过 App.
中的应用程序 class 设置上下文并且上下文设置在SDK1.singleton中App.Application.onCreate
问题是,当我尝试执行以下代码时,我总是得到 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);
...
知道为什么会发生这种情况吗?如何解决?
这不是使用 robolectric 在 Android 中获取应用上下文的推荐方法。您可以使用以下代码获取 activity...
Activity activity = Robolectric.setupActivity(MyActivity.class);
要获取应用上下文,只需调用 activity.getApplicationContext()
。
EDIT1: If you're using the latest Robolectric version, use
Robolectric.buildActivity(DashboardActivity.class)
instead.EDIT2: Make sure your
SDK1
extendsMultiDexApplication". Add this
@Config(manifest=Config.NONE, application = App.class, sdk = 17)` to the top of your test class.
如果有效请告诉我。