futuresimpleのAndroid Floating Action Buttonを使用しています。私はエスプレッソを使って、それと対話するUIテストを作成したいと思っています。 multiple_actions
は、フローティングアクションボタン(FAB)メニューを開くボタンです。 draw_fab
は、multiple_actions
をクリックすると表示されるフローティングアクションボタンの1つです。 draw_fab
をクリックすると、新しいアンドロイドのアクティビティが開始されます。このアクティビティでは、idがcomponentMenuButton
(それ自体がメニューを表示します)の標準ボタンを押したいとします。AndroidでのエスプレッソUIテスト浮動アクションボタンのメニュー
@Test
public void simpleCircuitTest() {
onView(withId(R.id.multiple_actions)).perform(click());
onView(withId(R.id.draw_fab)).perform(click());
onView(withId(R.id.componentMenuButton)).perform(click());
// other stuff...
}
このテストを実行すると、最初のクリックが動作し、フローティングメニューボタンが表示されることがわかります。しかし、draw_fab
をクリックするコールには0の影響があるように見えます。は、componentMenuButton
をクリックするとエラーになります。
これは私が混乱するところです。
@Test
public void simpleCircuitTest() {
onView(withId(R.id.draw_fab)).check(matches(isDisplayed()));
View v = mActivityRule.getActivity().findViewById(R.id.draw_fab);
Log.d(TAG, String.valueOf(v.getVisibility()==v.VISIBLE));
Log.d(TAG, String.valueOf(v.isShown()));
Log.d(TAG, String.valueOf(v.isEnabled()));
onView(withId(R.id.multiple_actions)).perform(click());
onView(withId(R.id.draw_fab)).check(matches(isDisplayed()));
Log.d(TAG, String.valueOf(v.getVisibility()==v.VISIBLE));
Log.d(TAG, String.valueOf(v.isShown()));
Log.d(TAG, String.valueOf(v.isEnabled()));
}
以上、私は何が起こっているのか理解しようとしています。 multiple_actions
FABをまだクリックしていなくてもこのテストを実行すると、isDisplayed
が成功し、すべてのログ出力がtrueになります。そして、次のセグメントでは、エスプレッソはmultiple_actions
をクリックし、再びすべての出力が真です。クリックのためにをクリックしてdraw_fab
を呼び出すのと同じように、テストの合格に全く影響しません。これはどのようにするべきではありませんか?
浮動アクションボタンに使用しているレポは、単にエスプレッソの使用をサポートしていないということがあります。そこには、FABやエスプレッソの基本的なことがあります。どちらですか?