2017-05-12 44 views
1

所以,我在測試Google Map功能時遇到了問題。在我的活動中,我有回調onMapClick(LatLng latlng),其中有方法顯示/隱藏工具欄。現在,我想測試它,但我不知道如何執行點擊地圖。我試圖用這樣的:Android,如何測試Google地圖

onView(withContentDescription("Mapa Google")).perform(click()); 

這:

UiDevice device = UiDevice.getInstance(getInstrumentation()); 
UiObject map = device.findObject(new UiSelector() 
     .descriptionContains("Mapa Google")); 
map.click(); 

但接縫的是,這是行不通的。你知道我該如何測試這種行爲?

回答

3

最好的辦法是UiAutomator庫, https://developer.android.com/training/testing/ui-testing/uiautomator-testing.html

private UiDevice uiDevice = UiDevice.getInstance(getInstrumentation()); 
private UiObject mMarker1 = uiDevice.findObject(new UiSelector().descriptionContains("The title of marker")); 
try { 
    mMarker1.click(); 
} catch (UiObjectNotFoundException e) { 

    e.printStackTrace(); 
} 

卷帶在地圖上,你可以使用這個

uiDevice.click(x, y);

x和y座標

+0

我希望它會幫助你,如果你有任何問題,請問我 –

+0

好吧,所以約2小時後,我終於設法做我想做的事。感謝您的幫助,我使用uiDevice.click(x,y);點擊地圖,它的工作原理:D但由於某些原因,我必須調用Thread.sleep(4000);之後,點擊,因爲否則我的測試下降,錯誤,工具欄是可見的。我通過調用setVisibility(View)來使我的收費欄不可見。GONE);在onMapClick()回調中。此外,我已禁用所有動畫,如它說[這裏](https://product.reverb.com/disabling-animations-in-espresso-for-android-testing-de17f7cf236f)uiDevice.click(x, Y);我不得不等待? – Panczur

+1

Espresso庫很正常:D試試Xamarin Ui測試它更舒適 –

0

谷歌地圖Android版本2,通常我們使用它的片段。從地圖片段添加地圖同步監聽器方法「getMapAsync」,那麼當「onMapReady」是呼叫然後設置地圖,請點擊回調有

googleMap.setOnMapClickListener(new GoogleMap.OnMapClickListener(){ 
    public void onMapClick(LatLng point){ 
     // do something here 
    } 
}); 

查看文檔API查看詳細使用https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap.html#setOnMapClickListener(com.google.android.gms.maps.GoogleMap.OnMapClickListener)

+0

是的,我知道它是如何工作的;)我不打算實現OnMapClickListener。我已經這樣做了。我想做一些android插裝測試[鏈接](https://developer.android.com/training/testing/unit-testing/instrumented-unit-tests.html),所以我需要以某種方式執行autometed點擊地圖上檢查,那點擊之後,我的工具欄會隱藏 – Panczur

+0

啊,是的!我的錯。你的代碼是關於測試。 – vsatkh

+0

作爲以下鏈接的答案http://stackoverflow.com/questions/29924564/using-espresso-to-unit-test-google-maps「onView(withContentDescription(」Google Map「))。perform(click() );」應該找工作找Espresso – vsatkh

0

從我的知識和研究,你不能直接模擬地圖點擊,或與此有關的標記點擊。如果你真的想達到這個目的,你可以嘗試在webview中加載你的地圖,並通過MapsEvents API模擬JavaScript中的點擊。至少對於標記......(我知道它不一定是你要找的東西,但是你想要測試的塊可以從OnMapClickListener移動到OnMarkerClickListener。如果它在那裏工作,沒有理由不能在新的回調)

如果我找到一個更好的工作解決方案,我會更新我的答案。

//在V2版本:

event.trigger(mapMarker [I]中, '點擊');

//在V3版本:

google.maps.event.trigger(mapMarker [I]中, '點擊');