【问题标题】:Robolectric 3.0 Nullpointer on DefaultPackageManager.getActivityInfo()DefaultPackageManager.getActivityInfo() 上的 Robolectric 3.0 Nullpointer
【发布时间】:2015-04-16 07:38:56
【问题描述】:

我尝试为以下活动创建 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,因此对于我的功能测试,我使用两个父活动中的哪一个并不重要。

【问题讨论】:

  • 它是从命令行运行还是从 AS 运行?你的项目结构是什么?您的调试版本是否更改applicationId
  • 我现在通过从 ActionBarActivity 更改为 FragmentActivity 解决了这个问题。
  • 我在 eclipse 中运行它
  • 添加您自己的答案!帮助他人

标签: android robolectric


【解决方案1】:

ActionBarActivity 已弃用。请改用AppCompatActivity

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-30
    • 1970-01-01
    • 2015-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多