2016-09-15 12 views
0

だから、私は自分のアプリケーション全体をテストしています。今、私はすべての写真を撮りたいです。それには2つのアクティビティと多数のフラグメントがあるため、すべてのアクティビティの最初の断片だけを取るので、動作させることはできません。スプーンとエスプレッソのテスト

私はどのようにすべての断片の写真を撮ることができますか?それはあなたを取得します

private Activity getActivityInstance() { 
     getInstrumentation().runOnMainSync(new Runnable() { 
      public void run() { 
       Collection resumedActivities = ActivityLifecycleMonitorRegistry.getInstance().getActivitiesInStage(RESUMED); 
       if (resumedActivities.iterator().hasNext()) { 
        currentActivity = (Activity) resumedActivities.iterator().next(); 
       } 
      } 
     }); 

     return currentActivity; 
    } 

:あなたはスクリーンショットを作成するためのコンテキストを必要とするとき

@RunWith(AndroidJUnit4.class) 
@FixMethodOrder(MethodSorters.NAME_ASCENDING) 
public class HearthBeatUITest { 

    private final int MILISECONDS_TIMEOUT = 300; 
    @Rule 
    public IntentsTestRule<IntroActivity> mActivityRule = new IntentsTestRule<>(IntroActivity.class); 
    private Activity currentActivity; 
} 

今、あなたは、このメソッドを呼び出します:

@RunWith(AndroidJUnit4.class) 
@FixMethodOrder(MethodSorters.NAME_ASCENDING) 
public class HearthBeatUITest { 

    private final int MILISECONDS_TIMEOUT = 700; 

    @Rule 
    public ActivityTestRule<IntroActivity> mActivityRule = new ActivityTestRule<>(IntroActivity.class); 
    @Rule 
    public ActivityTestRule<LoginActivity> mLoginActivityRule = new ActivityTestRule<>(LoginActivity.class); 

    @Test 
    /** 
    * Testing all the screens on the application if they are actually there 
    */ 
    public void startTest() { 
     Session.clear(); 
     Spoon.screenshot(mActivityRule.getActivity(), "initial_state"); 
     threadSleep(MILISECONDS_TIMEOUT); 
     onView(withId(R.id.button_register)).check(matches(isDisplayed())).perform(click()); 
     threadSleep(MILISECONDS_TIMEOUT); 
     Spoon.screenshot(mLoginActivityRule.getActivity(), "register_intro"); 
     onView(withId(R.id.register_with_email)).check(matches(isDisplayed())).perform(click()); 
     threadSleep(MILISECONDS_TIMEOUT); 
     Spoon.screenshot(mLoginActivityRule.getActivity(), "register_detailed"); 
     onView(withId(R.id.image_left_button)).check(matches(isDisplayed())).perform(click()); 
     threadSleep(MILISECONDS_TIMEOUT); 
     Spoon.screenshot(mLoginActivityRule.getActivity(), "register_intro"); 
     onView(withId(R.id.image_left_button)).check(matches(isDisplayed())).perform(click()); 
     threadSleep(MILISECONDS_TIMEOUT); 
     Spoon.screenshot(mActivityRule.getActivity(), "initial_state"); 
     onView(withId(R.id.button_signin)).check(matches(isDisplayed())).perform(click()); 
     threadSleep(MILISECONDS_TIMEOUT); 
     Spoon.screenshot(mLoginActivityRule.getActivity(), "login_intro"); 
     onView(withId(R.id.sign_in_emal)).check(matches(isDisplayed())).perform(click()); 
     threadSleep(MILISECONDS_TIMEOUT); 
     Spoon.screenshot(mLoginActivityRule.getActivity(), "login_detailed"); 
    } 

} 
+0

フラグメントにアニメーションがありますか?アニメーションを削除し、dev設定のアニメーションもオフにします。 – WenChao

答えて

0

まず、1つだけのルールが必要になりますあなたはスクリーンショットを撮ることができます。ちょうどfyi、あなたはダイアログのスクリーンショットを撮ることができません。

関連する問題