Espresso 无法单击 ImageView

Phi*_*Lab 5 android android-layout android-testing android-espresso

我的浓缩咖啡仪器测试无法单击 ImageView:

在视图“id: com.example.test:id/btnNext”上执行“单击”时出错。

原因:android.support.test.espresso.PerformException:在视图“未知”上执行“单击(3 次尝试后)”时出错。

引起原因:android.support.test.espresso.InjectEventSecurityException:java.lang.SecurityException:注入到另一个应用程序需要 INJECT_EVENTS 权限

但奇怪的是,仅仅三行就可以单击另一个看起来与我非常相似的 ImageView。像人类一样使用该应用程序也是可行的

这是我的最小的非工作示例,您看到错误了吗?

@RunWith(AndroidJUnit4.class)
@LargeTest
public class TestTest {

    @Rule
    public ActivityTestRule<TestActivity> _activityRule = new ActivityTestRule<TestActivity>(
            TestActivity.class);
    @Test
    public void testClicking() {
        onView(withId(R.id.btnPrevious)).perform(click());
        onView(withId(R.id.btnNext)).check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)));
        onView(withId(R.id.btnNext)).check(matches(isClickable()));
        onView(withId(R.id.btnNext)).perform(click()); // This line throws an exception
    }
}
Run Code Online (Sandbox Code Playgroud)

要测试的活动:

public class TestActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.test_activity);
    }
}
Run Code Online (Sandbox Code Playgroud)

和布局文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/mainContainer"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FF000000">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_alignParentBottom="true"
        android:id="@+id/lytFooter">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/btnPrevious"
            app:srcCompat="@drawable/left_arrow_shadow"
            android:layout_margin="1dp"
            android:layout_gravity="center_vertical"
            android:background="@drawable/lightbutton_selector"
            android:focusable="true"/>

        <TextView
            android:id="@+id/txtBottom"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/look_around"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:layout_weight="1"
            android:layout_gravity="center_vertical"
            android:gravity="center_horizontal"
            style="@style/CameraText" />

        <ProgressBar
            style="?android:attr/progressBarStyleHorizontal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/prgVideoMode"
            android:layout_weight="1"
            android:layout_gravity="center_vertical"
            android:gravity="center_horizontal"
            android:max="100" />

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/btnNext"
            app:srcCompat="@drawable/left_arrow_shadow"
            android:layout_margin="1dp"
            android:layout_gravity="center_vertical"
            android:background="@drawable/lightbutton_selector"
            android:focusable="true"
            android:clickable="true"/>

    </LinearLayout>

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

完整的 stracktrace 有 80 行长,所以如果您有兴趣,我将其发布在这里: http: //pastebin.com/RWa91G63