我试图测试两个不同的Activity
类,其中一个Activity
碰巧称为另一个。这里是我的代码,然后我会解释这个问题:getActivity()方法无限期地阻止单元测试
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
用户令牌不为null,它立即开始RootActivity
。如果它为空,则保持在IntroActivity
。问题是如果它是非空的,第一个测试(IntroActivityTest
)通过,然后挂在的getActivity()
方法调用中,并且测试只是冻结...没有例外,它只是挂在那条线上。如果用户标记为空,它将完全正确地运行这两个测试。
这可能是什么原因造成的?根据观察,似乎RootActivityTest
正在尝试使用从IntroActivity
开始的RootActivity
,但不应该启动它自己的RootActivity
实例吗?
很好的回答!在我的情况下,我需要设置我的监视器_before_我调用了'getActivity()',因为我的新'Activity'从'onCreate()'开始。 – 2012-08-02 23:31:19