私は2つの異なる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
、fromのユーザートークンSharedPreferences
がnull以外の場合、すぐに開始しますRootActivity
。nullの場合は、に留まりますIntroActivity
。問題は、それがnullでない場合、最初のテスト(IntroActivityTest
)に合格し、getActivity()
メソッド呼び出しでハングしRootActivityTest
、テストがフリーズすることです...例外はなく、その行でハングします。ユーザートークンがnullの場合、両方のテストを完全に正常に実行します。
これを引き起こしている可能性がありますか?観察から、から開始されたRootActivityTest
を使用しようとしているように見えますが、それ自体のインスタンスを開始するべきではありませんか?RootActivity
IntroActivity
RootActivity