Я пытаюсь протестировать два разных класса Activity
, где один Activity
вызывает другой. Вот мой код, а потом я объясню проблему:
Интроактивититест
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
. Проблема в том, что если он не -null, 1-й тест(IntroActivityTest
)проходит, а затем зависает на вызове метода getActivity()
в RootActivityTest
, и тест просто зависает... никаких исключений, он просто зависает на этой строке. Если токен пользователя нулевой, оба теста выполняются нормально.
Что может быть причиной этого? Из наблюдения видно, что RootActivityTest
пытается использовать RootActivity
, который был запущен из IntroActivity
, но не должен ли он запускать свой собственный экземпляр RootActivity
?