是否可以通过ActivityUnitTestCase测试org.holoeverywhere.Activity?

时间:2013-07-09 20:19:21

标签: unit-testing junit android-holo-everywhere

我正在使用 holoEverywhere 对我的第一个ui测试进行编码,我想测试一个从 org.holoeverywhere.app.Activity 扩展的Activity,我有这个问题......

我试图在目标应用程序中显示此内容     

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

  

java.lang.IllegalStateException:应用程序实例不是HoloEverywhere。请确保你延长课程   来自的android.test.mock.MockApplication   org.holoeverywhere.app.Application at   android.support.v4.app._HoloActivity.onInit(_HoloActivity.java:449)at   android.support.v4.app._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();
    }

1 个答案:

答案 0 :(得分:0)

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

@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);
}