勺子和浓咖啡测试

勺子和浓咖啡测试

问题描述:

所以,我有一个测试,通过我的整个应用程序。现在,我想拍摄一切。由于它有2个活动和大量的片段,所以我无法完成它的工作,因为它只需要每个活动的第一个片段。勺子和浓咖啡测试

我怎样才能实现我拍摄的每一个片段?

@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

你的片段是否有动画?删除动画并关闭开发设置中的动画。 – WenChao

首先,你只需要一个规则:

@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; 
} 

现在,当你需要上下文创建截图,你会调用这个方法:

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; 
    } 

这将让你目前的活动,你将能够截图。只是fyi,你不能截取对话框的截图。