Android Espresso测试-点击处理程序调用startActivity()时,执行click()超时

Sco*_*tyC 6 android android-testing android-espresso

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

FormAndroidTest.java:

@Test
public void testSubmitButton() throws Exception {

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

}
Run Code Online (Sandbox Code Playgroud)

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));

    ...
}
Run Code Online (Sandbox Code Playgroud)

我将其追溯到sendUp()Espresso的Tap.java中的调用失败:

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;

    ...
}
Run Code Online (Sandbox Code Playgroud)

uiController.injectMotionEvent(motionEvent);该循环中,直到注射完成为止一直循环,在这种情况下,它永远不会循环并且超时。

我以为它一定与我的线程没有解决有关,但是我不知道为什么或如何解决它。我已经看到了一些相关的主题,但是给出的答案似乎并不能解决我的确切问题。

谢谢