这是方案:
我有从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/