我尝试使用我们的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
如果有人知道如何解决这个问题,请告诉我。 谢谢。
答案 0 :(得分:2)
我在为buildType设置applicationIdSuffix时看到了这个错误。这似乎混淆了Robolectric的资源解析机制。
答案 1 :(得分:1)
对我来说,我从错误的模块导入了BuildConfig。将导入更改为正确的导入,问题就消失了。