Risposta breve: Con l'espresso non è davvero possibile. Una soluzione potrebbe essere quella di utilizzare UIAutomator: https://developer.android.com/tools/testing-support-library/index.html#UIAutomator https://developer.android.com/training/testing/ui-testing/uiautomator-testing.html
Quindi è necessario:
1) aggiungere le dipendenze Gradle:
dependencies {
androidTestCompile 'com.android.support.test:runner:0.2'
androidTestCompile 'com.android.support.test:rules:0.2'
androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1' }
2) Assicurati di aggiungere almeno titolo al marcatori anche se non lo stai usando.
3) il test, il codice è smth come questo:
UiDevice device = UiDevice.getInstance(getInstrumentation());
UiObject marker = device.findObject(new UiSelector().descriptionContains("marker title"));
marker.click();
Spiegazione:
GoogleMap genera interfaccia utente e rende anche più accessibili i contenuti cioè mappa può essere visto come un albero di accessibilità informazioni sul nodo.
Questo albero è un albero di visualizzazione virtuale, non rappresenta l'albero di visualizzazione reale. Ci arriveremo più tardi
Per impostazione predefinita, il contenuto Descrizione della mappa è "Google Map" e quello dei marker è "{markerTitle}. {MarkerSnippet}".
Allora la domanda è così perché non utilizzare l'espresso:
onView(withContentDescription("marker title. ")).perform(click());
?
Perché non lo troverà, però:
onView(withContentDescription("Google Map")).perform(click());
funzionano bene.
Quindi, come mai UIAutomator funziona e l'Espresso no?
Perché utilizzano alberi di visualizzazione diversi.
UIAutomator utilizza l'albero delle informazioni sul nodo di accessibilità fornite da AccessibilityService, mentre Espresso utilizza la gerarchia di viste e quindi elabora tutti i figli di qualsiasi ViewGroup. Le informazioni sul nodo di accessibilità e la gerarchia della vista possono o meno mappare uno a uno. In questo caso
OnView (withContentDescription ("Google Map"))
non trova un ViewGroup ma un TextureView, che non è noto per avere figli in modo Espresso non può sapere ciò che è disegnato in là .
Voilà! :)
Per 'Google Maps Espresso test', si prega di controllare [qui] (https://code.google.com/p/android-test-kit/wiki/EspressoSamples#Matching_data_using_onData_and_a_custom_ViewMatcher) – bjiang
Potrebbe per favore darmi un rapido esempio di un clic su un indicatore? – user2230304
Certo, guarda [qui] (https://github.com/jbj88817/GoogleMap-InfoWindow-android) e [qui] (https://github.com/jbj88817/GoogleMapExample-android) al mio github – bjiang