Robolectric 3.0在DefaultPackageManager.getActivityInfo()

时间:2015-09-02 08:08:43

标签: android robolectric

我尝试使用我们的App设置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)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     在java.lang.reflect.Method.invoke(Method.java:606)...

此处已提出类似问题:Robolectric 3.0 Nullpointer on DefaultPackageManager.getActivityInfo()但解决方案对我不起作用。

仅供参考我使用SupportLibraryVersion支持-v4-22.2.0

如果有人知道如何解决这个问题,请告诉我。 谢谢。

2 个答案:

答案 0 :(得分:2)

我在为buildType设置applicationIdSuffix时看到了这个错误。这似乎混淆了Robolectric的资源解析机制。

答案 1 :(得分:1)

对我来说,我从错误的模块导入了BuildConfig。将导入更改为正确的导入,问题就消失了。