2015-02-23 78 views
1

我想知道如何測試點擊按鈕時的活動啓動。我知道這可能是這樣做的: onView(withText(R.string.button_next_activity)).perform(click());,然後onView(withId(R.id.second_tv_welcome)).check(matches(withText(R.string.second_tv_welcome)));其中second_tv_welcome是來自第二個活動的textView。但我目前的活動是啓動Facebook的網頁視圖,我不知道這個活動中的ID是什麼,另外我沒有發現這種檢查方法(檢查一個文本視圖是否存在並且具有期望的文本)非常乾淨。 任何解決方法?謝謝。特濃咖啡,第二次活動的測試發佈

回答

1

您應該避免在功能測試中使用外部服務。這包括使用GPS和內部做的事情來進行API調用,例如, Facebook或Google+登錄按鈕。

我用它的方式是創建兩種風格,並在每個中都放置登錄按鈕佈局:一個真實的,用於生產和一個模擬,除了通知登錄操作成功(或失敗) ,所以調用代碼可能會轉到另一個活動。這聽起來似乎很難在第一妥善做好,所以你可能想看看我的寵物的應用程序的相關代碼:

兩種口味在這個應用程序中定義stub_login文件夾作爲src/res文件夾中的build.gradle

sourceSets { 
    mock { 
     java { srcDir 'src/stub_login/java' } 
     res { srcDir 'src/stub_login/res' } 
    } 
    apiary { 
     java { srcDir 'src/stub_login/java' } 
     res { srcDir 'src/stub_login/res' } 
    } 
} 

而且tests(不太多了,現在)與運行:

./gradlew connectedAndroidTestMockDebug 

注意,功能測試是在src/androidTestMock和單元測試可以留在src/androidTest

+0

即使它不回答我的問題,您的資源是非常寶貴的。我會舉例說明你做了什麼,並將其應用於我的項目。非常感謝!注意:我使用robolectric + mockito – 2015-02-24 18:38:19

+0

@ E-Kami進行單元測試如果這不能回答你,那麼我可能不明白這個問題。您的'button_next_activity'的點擊處理程序是直接調用'startActivity'還是它是Facebook登錄按鈕? – 2015-02-25 14:26:16

+0

是點擊一個按鈕調用'startActivity',我問的是測試是否啓動了正確的活動(因爲在某些情況下,我不希望Facebook登錄被啓動,但另一個活動)。無論如何,你給我的是非常有用的。我將它整合到我的項目atm中。非常感謝。 – 2015-02-25 14:54:56