我尝试为以下活动创建一个Robolectric测试(3.0-rc02):
public class NotificationActivity extends ActionBarActivity {
private NotificationFragment fragment;
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_notification);
}
}
测试看起来像这样:
@Config(manifest = IConfig.MANIFEST_PATH, emulateSdk = IConfig.SDK_VERSION, reportSdk = IConfig.SDK_VERSION)
@RunWith(RobolectricTestRunner.class)
public class AbstractFragmentTest {
@Test
public void test() {
Robolectric.buildActivity(NotificationActivity.class).setup().visible();
}
其中SDK_VERSION = 18。
运行测试时,我收到此错误:
java.lang.NullPointerException
at org.robolectric.res.builder.DefaultPackageManager.getActivityInfo(DefaultPackageManager.java:164)
at org.robolectric.util.ActivityController.getActivityInfo(ActivityController.java:65)
at org.robolectric.util.ActivityController.attach(ActivityController.java:51)
at org.robolectric.util.ActivityController$1.run(ActivityController.java:121)
at org.robolectric.shadows.ShadowLooper.runPaused(ShadowLooper.java:309)
at org.robolectric.shadows.CoreShadowsAdapter$2.runPaused(CoreShadowsAdapter.java:47)
at org.robolectric.util.ActivityController.create(ActivityController.java:118)
at org.robolectric.util.ActivityController.create(ActivityController.java:129)
at org.robolectric.util.ActivityController.setup(ActivityController.java:210)
at com.viae.common.view.AbstractFragmentTest.test(AbstractFragmentTest.java:31)
任何人都知道我在这里做错了什么?
问题已解决
使用FragmentActivity而不是ActionBarActivity对我来说是个窍门。 我的主要逻辑是在活动内部的一个片段(DialogFragment)中。这两个活动都支持DialogFragment,因此对于我的功能测试,我使用的两个父活动中的哪一个并不重要。