之前學習UiAutomator均是在eclipse下,因學習Android開發接觸AS越來越頻繁,於是想知道AS下如何建立UiAutomator項目。網上的資料多很凌亂,查了很多資料,實踐后發現,只要找對了步驟,AS下比eclipse下部署運行簡單的多。
步驟總結如下:
一、新建一個項目,和Android項目的區別是不要創建Activity(Add No Activity)
二、新建項目完成后,修改gradle文件
添加最后一行:
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.1.1' //引入Uiautomator androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1' }
Gradle sync后,可以看見在External Libraries目錄下生成了uiautomator-v18-2.1.1目錄,這時候表示uiautomator庫已經成功導入了。
三、編寫測試用例
這部分遇到了兩個困難:
①和eclipse可以用命令行編譯執行不同,AS全部集成在內部了,一般情況下點擊該測試方法右鍵,直接run就行
但是如果右鍵沒有run選項,不知道怎么運行怎么辦呢
可以先點擊AS左側邊欄Build Variants查看Test Artifact選項,選擇Andriod Instrumentation Tests, 再點擊左側邊欄Structure,找到該測試方法,右鍵點擊看是否可以運行。
②或許是因為1.0和2.0的關系(2.0被instrumentation收編了,有些1.0的方法在2.0被棄用了),這一個簡單的點擊home鍵的用例折騰了半天,才運行起來。
public class Test extends InstrumentationTestCase { //public class Test extends UiAutomatorTestCase { public void testHome(){ UiDevice.getInstance(getInstrumentation()).pressHome(); //UiDevice.getInstance().pressHome(); (UiDevice.getInstance()已經被棄用) //UiDevice device = getUiDevice(); (getUiDevice()找不到該方法) //device.pressHome(); } }
2.0不用再繼承UiAutomatorTestCase,但卻需要繼承InstrumentationTestCase。
獲取設備的方式也變化了,UiDevice.getInstance(getInstrumentation()) 這才是正確的使用方法。之前常用的兩種方式都不再可行。
1.0和2.0的API區別后續得好好熟悉熟悉。