当两个不同的类扩展它时,SingleLaunchActivityTestCase不起作用

时间:2011-03-03 10:07:15

标签: android instrumentation

这是情景:

我有两个从SingleLaunchActivityTestCase扩展的类。

public class ABCTest extends SingleLaunchActivityTestCase<ABCActivity>

public class XYZTest extends SingleLaunchActivityTestCase<XYZActivity>

这些是它们各自的构造函数和setUp方法:

public ABCTest() {
    super("com.android", ABCActivity.class);
}

@Override
protected void setUp() throws Exception
{
    super.setUp();
    mActivity = this.getActivity();
}

public ABCTest() {
    super("com.android", XYZActivity.class);
}

@Override
protected void setUp() throws Exception {
    super.setUp();
    mActivity = this.getActivity();
}

现在使用te android testRunner运行ABCTest中的测试用例但是对于XYZTest,我得到以下异常:

java.lang. java.lang.ClassCastException: com.android.ABCActivity
at com.instrument.XYZTest.setUp(XYZTest.java:45)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:529)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447)

但是在运行这些测试时,分别是ABC测试和XYZ测试,它可以正常工作。

问题似乎与this.getActivity()方法中的行setUp()有关。 ABC测试是通过setUp() XYZ测试返回com.android.ABCActivity this.getActivity()而不是com.android.XYZActivity

似乎很奇怪........任何人都可以帮帮忙??????

1 个答案:

答案 0 :(得分:0)

我也遇到了将上次测试中的Activity作为当前Activity类的问题。

我认为这是SingleLaunchActivityTestCase的一个问题。如果您在测试中使用它,我认为您的测试套件应该只使用一个Activity运行。如果您正在测试多个活动,我建议使用ActivityInstrumentationTestCase2。

如果您希望继续使用SingleLaunchActivityTestCase并查看是否有帮助,您可以尝试在拆解方法中完成Activity并将this.activity设置为null:

public void tearDown() {
  super.tearDown();
  this.getActivity().finish();
}