1

下の画像のように、チェックボックス付きのオーバーフロー メニューを備えた UI のテストを作成しています。各チェックボックスの状態を確認してトグルしたいのですが、合わせ方がわかりずらいです。チェックボックスとそのラベルは別のビューなので、チェックボックスを一致させることができず、どちらも機能withText()hasSibling()ません。レイアウトはメニュー フレームワークによって生成されるため、チェックボックスの ID を制御することはできません (両方とも ID "checkbox" を持っています)。

メニューはこんな感じです。

ここに画像の説明を入力

これは、チェックボックスを一致させてトグルする私の試みです。で失敗しますNoMatchingViewException

private static void toggleMenu(String label, boolean initial) {
    openActionBarOverflowOrOptionsMenu(getInstrumentation().getTargetContext());
    ViewInteraction v = onView(allOf(instanceOf(CheckBox.class), hasSibling(withText(label)), isCompletelyDisplayed()));
    if(initial)
        v.check(matches(isChecked()));
    else
        v.check(matches(not(isChecked())));
    v.perform(click());
    openActionBarOverflowOrOptionsMenu(getInstrumentation().getTargetContext());
    v = onView(allOf(instanceOf(CheckBox.class), hasSibling(withText(label)), isCompletelyDisplayed()));
    if(!initial)
        v.check(matches(isChecked()));
    else
        v.check(matches(not(isChecked())));
    pressBack();
}
4

1 に答える 1