2013-12-19 97 views
4

我在Android中使用Espresso創建單元測試。我的項目有NavigationDrawer。我創建了必須滑動NavigationDrawer並單擊按鈕的測試。在理解中,如何在我的測試中創建幻燈片操作。Android。如何從Espresso測試庫中滑動NavigationDrawer?

我目前的解決方案:

try 
    { 
     runTestOnUiThread(new Runnable() 
     { 

      @Override 
      public void run() 
      { 
       DrawerLayout drawer = (DrawerLayout)getActivity().findViewById(R.id.drawer_layout); 
       drawer.openDrawer(Gravity.LEFT); 
      } 
     }); 
    } 
    catch (Throwable e) 
    { 
     e.printStackTrace(); 
    } 

但我認爲這是糟糕的代碼。

回答

8

有一個描述如何在android-test-kit組中做到這一點,由ValeraZakharov解釋 - link

+0

謝謝,但代碼isAssignableFrom(DrawerLayout.class);不存在。方法isAssignableFrom是錯誤的。 – Viacheslav

+1

對我來說,一切都很完美。只需導入此:導入靜態com.google.android.apps.common.testing.ui.espresso.matcher.ViewMatchers.isAssignableFrom; – denys

+0

謝謝,這是工作。 – Viacheslav

0

NavigationDrawer支持即將在下一版Espresso發佈。目前,您可以實現自己的ViewAction,在Runnable中添加代碼。這是一個不完整的解決方案,因爲您可能會遇到與打開/關閉抽屜有關的計時問題。 Espresso 1.1將照顧這一點。

+0

意式濃縮咖啡是年輕的圖書館。例子太少了。我將轉移到UIAutomator。你在谷歌小組的答案幫助了我。 – Viacheslav

+0

你見過https://code.google.com/p/android-test-kit/wiki/EspressoSamples嗎?如果您認爲缺少某些東西,歡迎您提出要求,甚至添加更多樣本。 – ValeraZakharov

7

Espresso 1.1現在已經有一段時間了,但我仍然完全無法找到它的任何Navigation Drawer功能......也就是說,直到我發現這個功能實際上包含在一個完全獨立的庫中文件:espresso-contrib,這是可以通過與gradle這個

androidTestCompile 'com.android.support.test.espresso:espresso-contrib:2.2.2'

這是the "Why Espresso" page of the Espresso website提到超級簡單:

如果您需要可以從contrib庫中獲取功能,例如DrawerActions,從here複製espresso-contrib jar。

Here's the DrawerActions documentation。而here是一些使用它的示例代碼。希望能讓你走向正確的方向; EspressoSamples頁面沒有此示例代碼...

+1

此處提供了一個工作示例:https://code.google.com/p/android-test-kit/source/browse/testapp_test/src/main/java/com/google/android/apps/common/testing/ ui/testapp/DrawerActionsTest.java – Rolf

+0

@Rolf您發佈的鏈接已死亡。這是否在其他地方舉辦過? –

+1

@AndrewOrobator Mh,我不記得那時是什麼,但我相信它可能是這樣的:https://github.com/googlecodelabs/android-testing/blob/master/app/src/ AndroidTest/java/com/example/android/testing/notes/notes/AppNavigationTest.java – Rolf

3

openDrawer()已棄用,您可以改用此代碼。 我可以確認它的工作

onView(withId(R.id.my_drawer_layout)).perform(DrawerActions.open()); 
+0

嗨,在我的代碼無法解析的方法打開()錯誤顯示。請你告訴我? –

相關問題