Метод getActivity ()блокируется на неопределенный срок во время модульного тестирования

Я пытаюсь протестировать два разных класса 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?

6
задан Jason Robinson 2 August 2012 в 20:29
поделиться