gpt4 book ai didi

Android:如何使用 Espresso 测试按钮 bgcolor 在按下时是否发生了变化?

转载 作者:行者123 更新时间:2023-11-29 01:25:47 26 4
gpt4 key购买 nike

我想使用 Espresso 来测试一个带有颜色选择器作为背景的按钮,当用户按下它时,它是否真的正确地改变了颜色。但是,当我尝试使用 Espresso 执行此操作时,实际的点击被注册得如此之快以至于按钮执行它的行为(启动进度条)并且测试失败并显示“未找到 View ”。当用户在没有/在执行按钮逻辑之前按下背景颜色时,我如何测试背景颜色是否发生变化?本质上,我在这里寻找的是一种模拟 OnTouchListener 的 Action_Down 的方法。

Espresso.onView(ViewMatchers.withId(R.id.somebutton)).perform(ViewActions.click());

Espresso.onView(ViewMatchers.withText(R.string.somebuttonText)).check(ViewAssertions.matches(withTextColor(Color.BLACK)));


public static Matcher<View> withTextColor(final int color) {
Checks.checkNotNull(color);
return new BoundedMatcher<View, TextView>(TextView.class) {
@Override
public boolean matchesSafely(TextView warning) {
return color == warning.getCurrentTextColor();
}
@Override
public void describeTo(Description description) {
description.appendText("with text color: ");
}
};
}

我得到的错误是:

android.support.test.espresso.NoMatchingViewException: No views in hierarchy found matching: with string from resource id: <someid>

我也试过这样做,但失败并出现同样的错误:

    ViewInteraction somebuttoninteraction = Espresso.onView(ViewMatchers.withText(R.string.somebuttontext));
somebuttoninteraction.perform(ViewActions.click()).check(ViewAssertions.matches(withTextColor(Color.BLACK)));

我也试过这样(长按而不是点击)但还是一样:

somebuttoninteraction.perform(ViewActions.longClick()).check(ViewAssertions.matches(withTextColor(Color.BLACK)));

最佳答案

解决方案(很奇怪)是像这样做一些冗长而复杂的事情:

Espresso.onView(ViewMatchers.withText(R.string.somebuttontext)).inRoot(RootMatchers.withDecorView(CoreMatchers.is(getActivity().getWindow().getDecorView()))).perform(ViewActions.click()).check(ViewAssertions.matches(withTextColor(Color.BLACK)));

为了搜索点击后不在窗口前景的view。

关于Android:如何使用 Espresso 测试按钮 bgcolor 在按下时是否发生了变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34138856/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com