Robolectric 3.0 在 DefaultPackageManager.getActivityInfo() 上抛出空指针
Robolectric 3.0 throws Nullpointer on DefaultPackageManager.getActivityInfo()
我尝试使用我们的应用程序设置 Robolectric 3.0。我们有多个 dex 文件和
Activity 我尝试测试扩展一个正常的 Activity。
在 build.gradle 我这样做:
testCompile 'junit:junit:4.12'
testCompile "org.robolectric:robolectric:3.0"
testCompile('org.robolectric:shadows-multidex:3.0')
测试看起来像这样:
@Config(constants = BuildConfig.class, sdk = VERSION_CODES.KITKAT)
@RunWith(RobolectricGradleTestRunner.class)
public class FirstStartActivityTest
{
private FirstStartActivity activity;
@Before
public void setup() {
activity = Robolectric.setupActivity(FirstStartActivity.class);
}
@Test
public void failingTest() {
assertNotNull("This is supposed to fail!", null);
}
}
它一直抛出这个异常:
java.lang.NullPointerException
在 org.robolectric.res.builder.DefaultPackageManager.getActivityInfo(DefaultPackageManager.java:173)
在 org.robolectric.util.ActivityController.getActivityInfo(ActivityController.java:65)
在 org.robolectric.util.ActivityController.attach(ActivityController.java:51)
在 org.robolectric.util.ActivityController$1.run(ActivityController.java:121)
在 org.robolectric.shadows.ShadowLooper.runPaused(ShadowLooper.java:304)
在 org.robolectric.shadows.CoreShadowsAdapter$2.runPaused(CoreShadowsAdapter.java:45)
在 org.robolectric.util.ActivityController.create(ActivityController.java:118)
在 org.robolectric.util.ActivityController.create(ActivityController.java:129)
在 org.robolectric.util.ActivityController.setup(ActivityController.java:210)
在 org.robolectric.Robolectric.setupActivity(Robolectric.java:46)
在 FirstStartActivityTest.setup(FirstStartActivityTest.java:27)
在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
在 java.lang.reflect.Method.invoke(Method.java:606)...
这里已经提出了类似的问题:Robolectric 3.0 Nullpointer on DefaultPackageManager.getActivityInfo() 但解决方案对我不起作用。
仅供参考,我使用 SupportLibraryVersion support-v4-22.2.0
如果有人知道如何解决这个问题,请告诉我。
谢谢。
我在为 buildType 设置 applicationIdSuffix 时看到了这个错误。这似乎混淆了Robolectric的资源解析机制。
对我来说,我从错误的模块中导入了 BuildConfig。将导入更改为正确的导入,问题就消失了。
我尝试使用我们的应用程序设置 Robolectric 3.0。我们有多个 dex 文件和 Activity 我尝试测试扩展一个正常的 Activity。 在 build.gradle 我这样做:
testCompile 'junit:junit:4.12'
testCompile "org.robolectric:robolectric:3.0"
testCompile('org.robolectric:shadows-multidex:3.0')
测试看起来像这样:
@Config(constants = BuildConfig.class, sdk = VERSION_CODES.KITKAT)
@RunWith(RobolectricGradleTestRunner.class)
public class FirstStartActivityTest
{
private FirstStartActivity activity;
@Before
public void setup() {
activity = Robolectric.setupActivity(FirstStartActivity.class);
}
@Test
public void failingTest() {
assertNotNull("This is supposed to fail!", null);
}
}
它一直抛出这个异常:
java.lang.NullPointerException 在 org.robolectric.res.builder.DefaultPackageManager.getActivityInfo(DefaultPackageManager.java:173) 在 org.robolectric.util.ActivityController.getActivityInfo(ActivityController.java:65) 在 org.robolectric.util.ActivityController.attach(ActivityController.java:51) 在 org.robolectric.util.ActivityController$1.run(ActivityController.java:121) 在 org.robolectric.shadows.ShadowLooper.runPaused(ShadowLooper.java:304) 在 org.robolectric.shadows.CoreShadowsAdapter$2.runPaused(CoreShadowsAdapter.java:45) 在 org.robolectric.util.ActivityController.create(ActivityController.java:118) 在 org.robolectric.util.ActivityController.create(ActivityController.java:129) 在 org.robolectric.util.ActivityController.setup(ActivityController.java:210) 在 org.robolectric.Robolectric.setupActivity(Robolectric.java:46) 在 FirstStartActivityTest.setup(FirstStartActivityTest.java:27) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:606)...
这里已经提出了类似的问题:Robolectric 3.0 Nullpointer on DefaultPackageManager.getActivityInfo() 但解决方案对我不起作用。
仅供参考,我使用 SupportLibraryVersion support-v4-22.2.0
如果有人知道如何解决这个问题,请告诉我。 谢谢。
我在为 buildType 设置 applicationIdSuffix 时看到了这个错误。这似乎混淆了Robolectric的资源解析机制。
对我来说,我从错误的模块中导入了 BuildConfig。将导入更改为正确的导入,问题就消失了。