0

我正在使用holoEverywhere编写我的第一个 ui 测试,我想测试一个从org.holoeverywhere.app.Activity扩展的 Activity并且我遇到了这个问题......

我试图在目标应用程序中显示这个

并且也在单元测试项目的清单中。

java.lang.IllegalStateException:应用程序实例不是 HoloEverywhere。请确保从 android.support.v4.app._HoloActivity.onInit(_HoloActivity.java:449) 的 android.support.v4.app 的 org.holoeverywhere.app.Application 扩展类 android.test.mock.MockApplication。 _HoloActivity.forceInit(_HoloActivity.java:207) 在 org.holoeverywhere.app.Activity.onCreate(Activity.java:227) ......

这是我的代码:

public class MainActivityUnitTest extends
android.test.ActivityUnitTestCase<MainActivity> {
    private MainActivity activity;

    public MainActivityUnitTest () {
        super(MainActivity.class);
    }

    @Override
    protected void setUp() throws Exception {
      super.setUp();
      Context context = getInstrumentation().getTargetContext();

      Intent intent = new Intent(context,
              MainActivity.class);
      startActivity(intent, null, null);
      activity = getActivity();
    }
4

1 回答 1

0

问题是您的模拟应用程序(由单元测试创​​建)不是 HoloEverywhere 应用程序。在调用 startActivity 之前调用 setApplication。这会将使用的 android.test.mock.MockApplication 替换为 org.HoloEverywhere.app.Application。

@Override
protected void setUp() throws Exception
{
   super.setUp();

   setApplication(new org.HoloEverywhere.app.Application());

   Intent intent = new Intent(getInstrumentation().getTargetContext(), DeclarerenActivity.class);
   startActivity(intent, null, null);
}
于 2013-12-18T16:01:23.180 回答