首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spoon和Espresso测试

Spoon和Espresso测试
EN

Stack Overflow用户
提问于 2016-09-15 18:50:29
回答 1查看 628关注 0票数 0

所以,我有一个测试,它贯穿了我的整个应用程序。现在,我想把所有的东西都拍下来。因为它有两个活动和大量的片段,我不能让它工作,因为它只需要每个活动的第一个片段。

我如何才能实现拍摄每个片段的照片?

代码语言:javascript
复制
   @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");
    }

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-22 15:28:00

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

代码语言:javascript
复制
@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;
}

现在,当您需要创建截图的上下文时,您可以调用此方法:

代码语言:javascript
复制
   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;
    }

它会让你看到当前的活动,你还可以截图。仅供参考,你不能截取对话的截图。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39509223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档