Android Espresso测试 - 点击处理程序

时间:2016-11-30 22:28:33

标签: android android-espresso android-testing

我只是想在表单末尾测试一个提交按钮。

FormAndroidTest.java:

@Test
public void testSubmitButton() throws Exception {

    // Execute
    onView(withId(R.id.btnSaveFeedback))
            .perform(click());

}

click()被调用,我可以看到它在应用中执行了点击,但是呼叫永远不会回来(直到超时)

我已将其缩小为由点击处理程序中的startActivity调用引起的:

FormActivity.java:

public void onSubmitClicked(View view) {

    ...

    startActivity(new Intent(this, NextActivity.class)
            .addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)
            .addFlags(Intent.FLAG_ACTIVITY_TASK_ON_HOME));

    ...
}

我已将其追溯到Espresso的 Tap.java 失败的致电sendUp()来电:

private static Tapper.Status sendSingleTap(...) {

    ...

    DownResultHolder res = MotionEvents.sendDown(uiController, coordinates, precision);
    try {
        if (!MotionEvents.sendUp(uiController, res.down)) { <-- THIS TIMES OUT
            Log.d(TAG, "Injection of up event as part of the click failed. Send cancel event.");
            MotionEvents.sendCancel(uiController, res.down);
            return Tapper.Status.FAILURE;

    ...
}

在其中,uiController.injectMotionEvent(motionEvent);循环直到注射完成,在这种情况下它永远不会发生和超时。

我认为它必须与我的线程没有解决有关,但我不明白为什么或如何解决它。我已经看到了一些相关的线程,但给定的答案似乎并没有解决我的确切问题。

由于

0 个答案:

没有答案