2016-05-23 9 views
0

私はエスプレッソでを呼び出し、に戻り、Viewsに戻る前に動作が設定されているMainActivityに行くというテストを作成しています。しかし、問題は、スワイプを呼び出した後、R.id.mode_textで2番目に検査された行を指すNoActivityResumedExceptionが得られることです。エスプレッソのアクティビティ間でスワイプをテストする方法は?

@RunWith(AndroidJUnit4.class) 
public class ConsumerSettingsActivityTest { 

private ConsumerSettingsActivity mConsumerSettingsActivity; 

@Rule 
public ActivityTestRule<ConsumerSettingsActivity> mActivityTestRule = 
     new ActivityTestRule<>(ConsumerSettingsActivity.class); 

@Before 
public void initialize() { 
    mConsumerSettingsActivity = mActivityTestRule.getActivity(); 
} 

@Test 
public void checkCorrectButtonsAreClickableInPhotoModeThenReturnToMainActivity() { 

    // swipe to MainActivity and set behavior 
    onView(allOf(withId(R.id.settings_top_bar), isDisplayed())).perform(swipeRight()); 
    onView(withId(R.id.mode_text)).perform(click()); 
    onView(withId(R.id.photo_mode)).perform(click()); 


    // test ratio Views 
    onView(withId(R.id.ratio_full)).check(matches(isClickable())); 
    onView(withId(R.id.ratio_full)).perform(click()); 
    onView(withId(R.id.ratio_square)).check(matches(isClickable())); 
    onView(withId(R.id.ratio_square)).perform(click()); 
... 
} 
} 
+0

私は同じ問題を抱えていました。これは私のデバイスの画面がオフになったときに起こります。あなたのデバイスの画面はオンですか?また、スワイプが完了するまで待つために、スワイプが終わるたびに500ms待つ必要があります。それが役に立てば幸い。 – jeprubio

+0

デバイスの画面は常にオンで、ロックが解除されています。スワイプを呼び出すと、同じことをするボタンが押され、エラーが発生します。最初のスワイプの後に 'Thread.sleep(1500)'を追加しようとしましたが、 'RuntimeException::アクティビティが見つかりませんでした。 getActivity()やstartActivitySyncなどを呼び出してアクティビティを起動することを忘れましたか? –

答えて

0

短い回答:MainActivityが作成されずに呼び出されました。

長い答え:ConsumerSettingsActivityがスワイプをMainActivityに変更すると、実際のスワイプはfinish()となります。 MainActivityが作成されていないため、NoActivityResumedExceptionがスローされました。これを解決するために、テストはMainActivityで始まり、ConsumerSettingsActivityにスワイプしました。また、アクティビティ間でスワイプするには、スレッドをスリープ状態にする必要はありませんでした。

関連する問題