2017-09-19 9 views
0

私はエスプレッソの初心者です。エスプレッソで商品を購入する

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 

    <item 
     android:id="@+id/configuration" 
     android:icon="@drawable/ic_settings" 
     android:title="Configuration" 
     app:showAsAction="ifRoom"> 

     <menu> 
      <item 
       android:id="@+id/add_sound" 
       android:title="Add a sound" 
       app:showAsAction="ifRoom" /> 

      <item 
       android:id="@+id/takeof_sound" 
       android:enabled="false" 
       android:title="Take of the sound" 
       app:showAsAction="ifRoom" /> 

      <item 
       android:id="@+id/add_image" 
       android:title="Add an image" 
       app:showAsAction="ifRoom" /> 

      <item 
       android:id="@+id/takeof_image" 
       android:enabled="false" 
       android:title="Take of the image" 
       app:showAsAction="ifRoom" /> 
     </menu> 

    </item> 

    <item 
     android:id="@+id/add" 
     android:icon="@drawable/ic_add" 
     android:title="Add" 
     app:showAsAction="ifRoom" /> 
</menu> 

私はID configuration、その後ID add_soundとサブ項目をクリックして項目をクリックして実行したいと思います:私はこのmenu.xmlファイルを持っています。

android.support.test.espresso.NoMatchingViewException: No views in hierarchy found matching: with id: com.example.adrien.smartalarm:id/add_sound 
If the target view is not part of the view hierarchy, you may need to use Espresso.onData to load it from one of the following AdapterViews:android.support.v7.widget.MenuPopupWindow$MenuDropDownListView{5a0c4d8 VFED.VC.. .F...... 0,0-686,672} 

私がやっていることの何が問題になっている:私はこのエラーを取得するしかし

public void menuConfigurationTest() 
    { 
     onView(withId(R.id.configuration)).perform(click()); 
     onView(withId(R.id.add_sound)).perform(click()); 
    } 

:だから、私はこのコードを入力していますか?

答えて

1

サブメニューがアクティビティのビュー階層の一部ではないPopupWindowに表示されるという問題があります。したがって、次のものを追加する必要があります。

.inRoot(RootMatchers.isPlatformPopup()) 

次に、項目がMenuDropDownListViewという特別なListViewに表示されます。 onView()はここでは動作しませんので、onData()を使用する必要があります。

そのため、完全な式は次のとおりです。

onData(CoreMatchers.anything()) 
     .inRoot(RootMatchers.isPlatformPopup()) // isPlatformPopup() == is in PopupWindow 
     .inAdapterView(CoreMatchers.<View>instanceOf(MenuPopupWindow.MenuDropDownListView.class)) 
     .atPosition(0) // for the first submenu item, here: add_sound 
     .perform(click()); 
関連する問題