1. 程式人生 > >Robotium只有apk檔案時進行測試

Robotium只有apk檔案時進行測試

     首先:設定環境變數

1. 配置ANDROID_HOME為android sdk的安卓目錄,例如:D:\android-sdk

2. 在path下新增這兩個:

%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;

     其次: 安裝簽名檔案

1. 因為robotium要求被測應用和測試程式碼要有一致的簽名, 所以我們需要把下載到的apk,通過re-sign.jar來產生debug key的apk,這個重新生成的apk就會跟測試專案簽名一致了

re-sign.jar可以從這裡下載到:

http://www.troido.de/re-sign.jar

2. 下載完後,在命令列下 通過 java -jar re-sign.jar就會出現一個節目,然後將apk拖到這個節目,就會自動生成一個debug key的apk

產生新apk的過程中會彈出一個資訊框,記得截下圖,因為裡面有兩個資訊我們等會的程式碼中需要用到

3. 安裝產生的apk。然後開啟模擬器(模擬器器一定要開啟才能安裝成功),然後開啟命令列  adb install mitalk_debug.apk(新生成apk的名稱) , 或者雙擊apk檔案也可以安裝

安裝成功就可以再模擬器裡看到該應用的圖示了

     然後:建立專案(使用米聊apk)

1. 開啟Eclipse,點選File->New一個Android Test Project  ApkTest,

然後點選下一步的時候選擇This project(因為我們沒有米聊應用的原始碼),然後選擇要在哪個android版本上測試

2. 在該專案下建立一個包,com.mitalk.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.xiaomi.channel.ui.ChannelLauncherActivity";

private static String packageName = "com.xiaomi.channel";

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() {

              //一定時間內等待text出現,否則就出錯

              solo.waitForText("Log In", 1, 10000);

              //點選text “Log In”

              solo.clickOnText("Log In");

              //一定時間內等待text出現,否則就出錯
              solo.waitForText("OK", 1, 2000);

              //輸入text
              solo.enterText(0, "13559494170");
              solo.enterText(1, "123456");

              //點選text “OK”
              solo.clickOnText("OK");

              //等待出現下面的text後,進行驗證
              solo.waitForText("Incorrect ID number or password.", 1, 10000);
              assertTrue(solo.searchText("Incorrect ID number or password.",true));

}

@Override

public void tearDown() throws Exception {

try {

this.solo.finishOpenedActivities();

} catch (Throwable e) {

e.printStackTrace();

}

this.activity.finish();

super.tearDown();

}

}

3. 右鍵該專案,選擇property然後選擇java build path, 選擇 Add External JARs,選擇下到的robotium.jar

4. 在跑測試用例之前,還需要修改下AndroidManifest.xml檔案的android:targetPackage為被測應用的根的包名

  <instrumentation         android:name="android.test.InstrumentationTestRunner"         android:targetPackage="com.xiaomi.channel" />      最後: run as android junit test,就可以進行測試了