文章來源 : http://blog.csdn.net/u011504118/article/details/46318693
最近因為需要用到Android的自動化測試,於是找到了uiautomator和espresso這兩個框架(這里以uiautomator為例).由於在Android Studio(以下簡稱AS)中使用uiautomator這方面的資料很少,國內這方面的博客基本沒有,國外的資料也都很少.可能是因為比較新的原因吧.雖然Android官網有教程,但最終還是折騰了好久才解決.寫這篇博客一方面希望大家能夠少走一些彎路,另一方面也算是我自己的學習筆記吧.
說明:我的AS版本是1.2.1.1
關於什么是uiautomator和espresso,這里就不做介紹了.
使用之前首先得保證你的Android Support Repository已經成功安裝
安裝Support Repository
安裝成功后,根據Android官網給出的教程,首先第一步是在build.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.0'
}
然后添加
defaultConfig {
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
添加完依賴后Sync Project with Gradle Files,但是同步后我發現上面相關的庫文件並沒有被添加進來.對比很多資料后,我很確信不是我在寫法的問題.就是這個問題折騰了我好幾天的!
最后的解決辦法是先把androidTestCompile換成compile,同步一下,此時會發現庫文件已經被添加進來了.
最后再將compile換回androidTestCompile,解決~
突然就覺得自己被坑了,也不知道這算不算是AS的一個BUG…
如果同步之后發現諸如此類的錯誤:
Warning:Conflict with dependency 'com.android.support:support-annotations'. Resolved versions for app (22.1.1) and test app (22.0.0) differ.
先在項目的根目錄用./gradlew -q app:dependencies查看項目依賴關系(Windows用戶請使用gradlew.bat -q app:dependencies), 然后修改build.gradle,否則在后面運行測試時可能會報依賴關系的錯誤.
可能需要為gradlew加上可執行權限.
說明:我這里會報這個警告是因為新建項目的時候AS幫我自動添加了compile 'com.android.support:appcompat-v7:22.1.1'依賴,將22.1.1改為22.0.0即可.
然后還要在build.gradle中添加:
packagingOptions {
exclude 'LICENSE.txt'
}
不添加的話運行時候還是會報錯的.
最后,確保此時有android設備在運行(虛擬器或手機都可以,要求是系統版本要18或18以上),然后在項目的根目錄下輸入命令:
./gradlew cC
如無意外的話,應該可以看到BUILD SUCCESS了!
如果不想用命令行的話,也可以Edit Configurations,然后點擊+ –> Android Test,然后選擇對應的Module,然后在下面的Specific Instrumentation Runner選擇
android.support.test.runner.AndroidJUnitRunner
選擇OK,然后點擊啟動按鈕.如無意外的話,應該可以看到一條綠色的進度條了!
關於另外一個自動化測試框架Espresso,導入方法和uiautomator一樣,不同的只是依賴而已.
dependencies {
androidTestCompile 'com.android.support.test:runner:0.2'
androidTestCompile 'com.android.support.test:rules:0.2'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.1'
}
關於測試框架的導入就先說這么多了,有關這些框架的使用網上的資料應該也是比較多的了,只不過有一些API已經被棄用了.等我熟悉了這兩大框架的使用再來寫相關的博客吧.