私は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を使用しようとしているように見えますが、それ自体のインスタンスを開始するべきではありませんか?RootActivityIntroActivityRootActivity