一、思路:
1、當我們在Android studio中運行測試用例時首先會編譯出app-debug.apk和app-debug-androidTest.apk,然後通過adb命令將被測試apk push到手機然後執行adb命令進行安裝;測試apk亦然。最後在調用adb shell am instrument.....命令來啓動測試用例
2、Android studio將測試工程做了密封,無法設置Android:targetPackage的值
這就使得我們無法指定被測試應用,只能將當前工程的Android應用工程的包名設置爲我們要測試的應用包名,但是這樣安裝的時候會提示我們已存在相同包名的應用是否卸載
3、所以只要我們在編譯好apk後,將當前工程編譯好的apk替換成我們的被測試apk不就搞定了嗎!
4、首先定義task任務,將我們的目標被測試apk複製到studio默認的apk生產文件夾下,那麼這個task任務的執行時間就要在編譯完成後,執行adb push .apk之前。
5、在Android studio run/debug配置界面有這麼一個東西before launch,這正好解決了我們的問題,那麼下面我們來試試具體操作
二、在app模塊下build.gradle文件中自定義一個task任務:
1、當我們在Android studio中運行測試用例時首先會編譯出app-debug.apk和app-debug-androidTest.apk,然後通過adb命令將被測試apk push到手機然後執行adb命令進行安裝;測試apk亦然。最後在調用adb shell am instrument.....命令來啓動測試用例
2、Android studio將測試工程做了密封,無法設置Android:targetPackage的值
這就使得我們無法指定被測試應用,只能將當前工程的Android應用工程的包名設置爲我們要測試的應用包名,但是這樣安裝的時候會提示我們已存在相同包名的應用是否卸載
3、所以只要我們在編譯好apk後,將當前工程編譯好的apk替換成我們的被測試apk不就搞定了嗎!
4、首先定義task任務,將我們的目標被測試apk複製到studio默認的apk生產文件夾下,那麼這個task任務的執行時間就要在編譯完成後,執行adb push .apk之前。
5、在Android studio run/debug配置界面有這麼一個東西before launch,這正好解決了我們的問題,那麼下面我們來試試具體操作
二、在app模塊下build.gradle文件中自定義一個task任務:
task copyTask(type: Copy) { from '被測試.apk'//將被測試apk放在工程app目錄下 into 'build/outputs/apk/'//將apk複製到指定目錄 rename { String fileName -> //在複製時重命名文件 fileName = "app-debug.apk" // 重命名 } }
在defaultConfig中定義被測試apk報名和測試啓動類InstrumentationTestRunner
defaultConfig {
minSdkVersion 18
targetSdkVersion 23
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.test.InstrumentationTestRunner"
}
在app目錄build.gradle文件中的dependencies模塊添加robotium包依賴
三、創建測試類
在androidTest.java目錄下創建一個測試類TestDemo,繼承父類ActivityInstrumentationTestCase2
接下來獲取被測app的啓動activity的class對象和定義測試用例:
public class TestDemo extends ActivityInstrumentationTestCase2 { private static Class<?> launcherActivity; public Solo solo; static { try { launcherActivity = Class.forName("被測app的launchactivity"); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public TestDemo() { super(launcherActivity); } @Override protected void setUp() throws Exception { solo=new Solo(getInstrumentation(),getActivity()); } @Override protected void tearDown() throws Exception { solo.finishOpenedActivities(); } public void testCase_001(){ solo.sleep(5000); Log.e("123","啓動測試成功"); } }
四、接下來就是運行測試用例
在工具欄點擊run,點擊Edit configurations 在Defaults中點擊Android Tests,在before launch中添加gradle-aware
make在輸入框中輸入,自定義的task任務,確定後就大功告成。
接下來我們直接在測試用例中點擊運行我們的測試用例即可
讓我們看一看測試結果
OK,robotium在Android studio無源碼完美運行