【发布时间】:2012-08-02 20:29:19
【问题描述】:
我正在尝试测试两个不同的 Activity 类,其中一个 Activity 恰好调用另一个。这是我的代码,然后我会解释问题:
IntroActivityTest
public class IntroActivityTest extends ActivityInstrumentationTestCase2<IntroActivity> {
IntroActivity activity;
public IntroActivityTest() {
super( IntroActivity.class );
}
@Override
protected void setUp() throws Exception {
super.setUp();
activity = getActivity();
}
public void testIntroBypass() {
if ( new SharedPreferencesHelper( getInstrumentation().getTargetContext() ).retrieveUserToken() == null ) {
assertTrue( !activity.isFinishing() );
}
else {
assertTrue( activity.isFinishing() );
}
}
}
RootActivityTest:
public class RootActivityTest extends ActivityInstrumentationTestCase2<RootActivity> {
RootActivity activity;
public RootActivityTest() {
super( RootActivity.class );
}
@Override
protected void setUp() throws Exception {
super.setUp();
activity = getActivity();
}
public void testInitialTab() {
assertTrue( activity.getSupportActionBar().getSelectedTab().getText().toString().equalsIgnoreCase( "Library" ) );
}
}
在IntroActivityTest 中,如果来自SharedPreferences 的用户令牌非空,则立即启动RootActivity。如果它为空,它将停留在IntroActivity。问题是,如果它不为空,则第一个测试 (IntroActivityTest) 通过,然后它挂在 RootActivityTest 中的 getActivity() 方法调用上,并且测试只是冻结...没有异常,它只是挂起在那条线上。如果用户令牌为空,它会完全正常运行这两个测试。
这可能是什么原因造成的?从观察来看,RootActivityTest 似乎正在尝试使用从IntroActivity 开始的RootActivity,但它不应该开始自己的RootActivity 实例吗?
【问题讨论】:
标签: android unit-testing junit android-testing