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。将导入更改为正确的导入,问题就消失了。