浓缩咖啡执行点击操作

8

我尝试使用'Espresso'编写简单的测试

@RunWith(AndroidJUnit4.class)
@LargeTest
public class EspressoTest {
    @Rule
    public ActivityRule<IntroActivity> mActivityRule = new ActivityRule(IntroActivity.class);

    public EspressoTest() {
        IdlingPolicies.setMasterPolicyTimeout(1000, TimeUnit.SECONDS);
    }

    @Test
    public void testShouldClickEmailButton() {
            onView(withText(R.string.in_email)).perform(click());
    }


}

但我遇到了一个错误:

PerformException: Error performing 'single click' on view 'with string from resource id: <2131099761>[in.email] value: Login With Email'.

我正在尝试不同的测试框架,robotium目前对我来说是最好的,但如果有人能帮忙修复这个错误,我将非常感激。

更新更详细的日志

由于目标视图不符合以下一个或多个约束条件之一,因此不会执行操作:至少90%的视图区域显示给用户。目标视图:“DSeparatedButton {id = 2131427459,res-name = button_login,visibility = VISIBLE,width = 622,height = 120,has-focus = false,has-focusable = true,has-window-focus = true,is-clickable = true,is-enabled = true,is-focused = false,is-focusable = true,is-layout-requested = false,is-selected = false,root-is-layout-requested = false,has-input-connection = false,x = 0.0,y = 333.0,text = Login With Email,input-type = 0,ime-target = false,has-links = false}”

我还有一个小的启动动画

enter image description here


由于目标视图不符合以下一个或多个约束条件,因此不会执行操作。你读完了吗? - Jared Burrows
啊,感谢您更新帖子。我认为使用Espresso是正确的选择。看看这个链接:https://dev59.com/xGEi5IYBdhLWcg3wRauf。 - Jared Burrows
啊,这是由不同作者编写的两个不同框架。这很好,这样下一个遇到这个问题的人就可以搜索这个问题 :) - Jared Burrows
嗨 @Gorets,如果你能提供一点IntroActivity的代码,那会很有帮助。否则,我们只能凭猜测来回答你的问题。你得到的答案可能包含最佳实践,但不一定是解决方案。我们需要知道你是如何构建相关的视图的。目前我们只知道你的匹配器失败了。 - OYRM
要等待测试用例或延迟执行测试用例,请使用以下代码:SystemClock.sleep(2000); ///2 seconds - Nikunjkumar Kapupara
显示剩余3条评论
2个回答

4

onView方法仅用于屏幕上完全可见的视图,因此Espresso可以正确测试它们。 我的建议是使用onData方法来测试视图。 这应该可以解决:

    onData(withText(R.string.in_email)).perform(click());

如果这不是你正在寻找的答案,我可以提供更多帮助。如果这个方法没有解决你的问题,请告诉我。 祝你好运!


尝试过但没有成功,在Firebase内在物理三星S7设备上运行时失败,如果我查看结果视频,屏幕的一部分是黑色的,看起来像是为视频调整了大小。 - Daniel Gomez Rico

-3
@RunWith(AndroidJUnit4.class)
@LargeTest
public class EspressoTest {
    @Rule
    public ActivityTestRule<IntroActivity> mActivityRule = new ActivityTestRule(IntroActivity.class);



    @Test
    public void testShouldClickEmailButton() {
            mActivityRule.launch(new Intent());
            onView(withText(R.string.in_email)).perform(click());
    }


}

8
在编程中,附加解释总是受到赞赏的。 - Jérémie Bertrand

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接