Android Robotium搭建環境測試微信
因為要在命令行下運行一些android的工具,所以配置一些環境變量會比較方便:
遇到問題: java -jar re-sign.jar 出現提示android路徑沒有配置好:
需要配置如下:
配置ANDROID_HOME為android sdk的安卓目錄,例如:D:\android-sdk
在path下添加這兩個:
%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;
重新開關一次命令窗口
因為robotium要求被測應用和測試代碼要有一致的key,所以我們需要把下載到的apk,通過re-sign.jar來產生debug key的apk,這個重新生成的apk就會跟測試項目簽名一致了
re-sign.jar可以從這里下載到:
http://www.troido.de/re-sign.jar
下載完后,在命令行下 通過 java -jar re-sign.jar就會出現一個節目,然后將apk拖到這個節目,就會自動生成一個debug key的apk
產生新apk的過程中會彈出一個信息框,記得截下圖,因為里面有兩個信息我們等會的代碼中需要用到
然后打開模擬器(模擬器器一定要打開才能安裝成功),然后打開命令行
adb install mitalk_debug.apk(新生成apk的名稱)
安裝成功就可以再模擬器里看到該應用的圖標了
注意:
一、刪除之前 APK 文件的簽名
1、解壓apk 文件
2、刪除解壓出來文件夾中的 META-INF 目錄:META-INF 存放簽名后的CERT 和MANIFEST 文件,用于識別軟件的
簽名及版權。
3、刪除文件夾后重新把解壓出來的其它文件夾壓縮為zip 文件,然后直接把文件后綴改為apk
二、為 APK 重新生成簽名
1、將證書復制到與需要重新簽名的apk 文件相同的目錄下
2、jarsigner -keystore debug.keystore -storepass android -keypass android D:\Robotium\robotium\robotium\weixin_delet_rsa_sf.apk androiddebugkey
創建自動化測試項目
打開Eclipse,點擊File->New一個Android Test Project,然后點擊下一步的時候選擇This project(因為我們沒有米聊應用的源碼),然后選擇要在哪個android版本上測試
在該項目下創建一個包,com.tencent.test,在該包下創建LoginTest類,如下
package com.mitalk.test; import android.app.Activity; import android.test.ActivityInstrumentationTestCase2; import com.jayway.android.robotium.solo.Solo; @SuppressWarnings("rawtypes") public class LoginTest extends ActivityInstrumentationTestCase2 { public Solo solo; public Activity activity; private static Class<?> launchActivityClass; // 對應re-sign.jar生成出來的信息框里的兩個值 private static String mainActiviy = "com.tencent.mm.ui.LauncherUI"; private static String packageName = "com.tencent.mm"; static { try { launchActivityClass = Class.forName(mainActiviy); } catch (ClassNotFoundException e) { throw new RuntimeException(e); } } @SuppressWarnings("unchecked") public LoginTest() { super(packageName, launchActivityClass); } @Override protected void setUp() throws Exception { super.setUp(); this.activity = this.getActivity(); // this.solo = new Solo(getInstrumentation(), getActivity()); } public void testLoginWithIncorrentUsernameAndPassword() throws Exception { wait(5000); //待完成 } @Override public void tearDown() throws Exception { try { this.solo.finishOpenedActivities(); } catch (Throwable e) { e.printStackTrace(); } this.activity.finish(); super.tearDown(); } } |
posted on 2014-08-20 09:36 順其自然EVO 閱讀(407) 評論(0) 編輯 收藏 所屬分類: android