首页> 疑难解答

我的重写方法不能正常工作,代码进入方法,但不执行

withpy 2021-06-19

简介我写自动测试用于应用程序。在应用程序开始时,它有一个入门(ViewPager),在最后一页上有一些页面和按钮。我需要刷这些页面并按下按钮。这是 ...

我写自动测试用于应用程序。在应用程序开始时,它有一个入门(ViewPager),在最后一页上有一些页面和按钮。我需要刷这些页面并按下按钮。这是我上课的课程

public class Onboarding {

ViewInteraction onboardingScreen = onView(
        allOf(withId(R.id.vp_onboarder_pager),
                childAtPosition(
                        allOf(withId(R.id.cl_onboarder),
                                childAtPosition(
                                        withId(android.R.id.content),
                                        0)),
                        0),
                isDisplayed()));

ViewInteraction skipButton = onView(allOf(withId(R.id.btn_finish)));

ViewAction skipOnboardingScreen = new ViewAction() {
    @Override
    public Matcher<View> getConstraints() {
        return any(View.class);
    }

    @Override
    public String getDescription() {
        return null;
    }

    @Override
    public void perform(UiController uiController, View view) {
        ViewPager onboardingPager = (ViewPager) view;
        OnboarderAdapter adapter = (OnboarderAdapter) onboardingPager.getAdapter();
        int currentPage = 0;
        int screenCount = adapter.getCount();
        while (screenCount > 0){
            onboardingPager.setCurrentItem(currentPage);
            screenCount--;
            currentPage++;
        }
        skipButton.perform(click());
    }
};

public void skipOnboarding() {
       onboardingScreen.perform(skipOnboardingScreen); 
}

我用这种方式调用我的测试:

@Test
public void onboardingPass() {

    try {
        Thread.sleep(5000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

    Onboarding onboarding = new Onboarding();
    onboarding.skipOnboarding();

}

测试执行时,onboardingPager.setCurrentItem(currentPage)必须切换当前页面,但它不会。当我在debuger中看到它时,测试执行这一行,但页面没有切换。为什么会这样?谢谢。

0
投票

......我需要刷这些页面......

要在您的仪器测试中滑动,请将其与您的视图一起使用;

onboardingScreen.perform(swipeRight());

swipeRight()来自AndroidX Test包androidx.test.espresso.action.ViewActions.swipeRight

阅读更多关于AndroidX Test Espresso ViewActions包here的信息。

根据您的要求设置滑动,看看是否有帮助。


0
投票

如果您正在尝试滚动到ViewPager的最后一页,那么您应该使用ViewPagerActions.scrollToLast代替。而且我确信它们都可以简化为:

public void skipOnboarding() {
    onView(withId(R.id.vp_onboarder_pager)).perform(ViewPagerActions.scrollToLast());
    onView(withId(R.id.btn_finish)).perform(click());
}

上一篇:这会更短吗?

下一篇:属性初始化程序在“self”可用之前运行

相关文章

  • 如何防止TortoiseSVN数据库锁定?

    我有一台带有最新TortoiseSVN版本(1.11.0 x64)的Windows 7 PC。几乎每次我想提交服务器的更改,我都会收到以下错误:提交失败(详情如下):无法...

  • 从基于数组列的pandas.dataframe中进行选择

    我有一个数据框,其中包含一个包含数组的列(所有1x9数组)。对于该列中的所有行,我希望找到第三个元素为1的那些行,并从...中的另一列中选择值。

  • 如何使用Makefile将多个C源文件编译为目标文件

    这是makefile代码,我使用“make”执行它。 CC = arm-none-eabi-gcc CXX = arm-none-eabi-g ++ BUILD_PATH = ../../build dir_guard = mkdir -p $(@ D)STATIC_OPENTHREAD_LIB = $(BUILD_PATH)/ ...

  • React路由器将props传递给路由组件

    我正在尝试使用react路由器将app.jsx中的道具传递给我的路由组件之一但是我得到以下错误TypeError:无法读取属性&#39;acc&#39;的undefined这里是我的代码...

  • 使用pthreads在C ++中进行线程通信

    有两个线程T1和T2类Sender {public:void sendMessage(); }; class Reciever {public:void getMessage(string msg); };考虑发件人S在线程T1,...

  • 给出的最终块未正确填充

    我正在尝试实现基于密码的加密算法,但是却遇到此异常:javax.crypto.BadPaddingException:如果最终块未正确填充,可能是什么问题? (我是新来的...