SingleLaunchActivityTestCase

SingleLaunchActivityTestCase

这是方案:

我有从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()上。
Aftes ABC测试通过XYZ测试的setUp()返回com.android.ABCActivity而不是this.getActivity()com.android.XYZActivity

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

最佳答案

在从上一个测试中获取Activity作为当前Activity类时,我也遇到了问题。

我认为SingleLaunchActivityTestCase存在问题。如果您在测试中使用此功能,我认为您的测试套件应仅使用一个Activity运行。如果要测试多个活动,则建议改用ActivityInstrumentationTestCase2。

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

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

关于android - 当两个不同的类对其进行扩展时,SingleLaunchActivityTestCase不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5179218/

10-10 02:06