在 SurfaceView 上执行 Espresso 视图操作
Perform Espresso view action on SurfaceView
我有一个从 SurfaceView 扩展而来的 class GameView
。我在 activity_main 布局中添加了这个视图,如下所示:
gameView = new GameView(MainActivity.this);
activity_main = findViewById(R.id.activity_main);
activity_main.addView(gameView);
现在我想使用 Espresso UI 测试在此 SurfaceView 上执行任何查看操作(即单击)。到目前为止,我想到了这个:
DataInteraction surfaceView = onData(instanceOf(GameView.class))
.inAdapterView(withClassName(is("android.view.SurfaceView")));
surfaceView.perform(click());
但这不是正确的方法,因为它会出现以下错误:
android.support.test.espresso.NoMatchingViewException: No views in hierarchy found matching: with class name: is "android.view.SurfaceView"
如何找到视图?
使用 getName() 解决了问题。
ViewInteraction surfaceView = onView(withClassName(equalTo(GameView.class.getName())));
surfaceView.perform(click());
我有一个从 SurfaceView 扩展而来的 class GameView
。我在 activity_main 布局中添加了这个视图,如下所示:
gameView = new GameView(MainActivity.this);
activity_main = findViewById(R.id.activity_main);
activity_main.addView(gameView);
现在我想使用 Espresso UI 测试在此 SurfaceView 上执行任何查看操作(即单击)。到目前为止,我想到了这个:
DataInteraction surfaceView = onData(instanceOf(GameView.class))
.inAdapterView(withClassName(is("android.view.SurfaceView")));
surfaceView.perform(click());
但这不是正确的方法,因为它会出现以下错误:
android.support.test.espresso.NoMatchingViewException: No views in hierarchy found matching: with class name: is "android.view.SurfaceView"
如何找到视图?
使用 getName() 解决了问题。
ViewInteraction surfaceView = onView(withClassName(equalTo(GameView.class.getName())));
surfaceView.perform(click());