1. 程式人生 > >Robotium 專題(二): Robotium 只有 apk 檔案時進行測試

Robotium 專題(二): Robotium 只有 apk 檔案時進行測試

轉載地址:http://testerhome.com/topics/1655

這個只有APK的時候進行測試,是我親身實踐後,覺得這篇文章比較有用,所以就發在這裡了!
昨天看到一個帖子寫了對自動化的一些茫然,說句實話,我也覺得自動化現在用處不是特別大,但我覺得將來自動化是一個比較好得趨勢,移動端雖然產品迭代快,但對一般性的迴歸測試,我覺得自動化還是能省一些時間的。
另外,還看到一些對測試感覺茫然的朋友,其實我想說,在現有的環境下,無論做什麼事情或者什麼工作,都會有厭煩的時候,但一定不要一感到厭煩就想放棄,然後找各種藉口去給自己留後路,我個人認為只要勤奮、肯學習,無論是技術還是管理,用心堅持去做,都能做出一番自己的事業!
好了,長話短說,既然現在選擇做測試,那麼就把現有的測試做好,做精,做專,這樣即使轉行,也可以給自己一個好的交代!

首先:設定環境變數

  1. 配置ANDROID_HOME為android sdk的安卓目錄,例如:D:\android-sdk
  2. 在path下新增這兩個:
    %ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;
    其次: 安裝簽名檔案

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

  4. 下載完後,在命令列下 通過 java -jar re-sign.jar就會出現一個節目,然後將apk拖到這個節目,就會自動生成一個debug key的apk
    產生新apk的過程中會彈出一個資訊框,記得截下圖,因為裡面有兩個資訊我們等會的程式碼中需要用到

  5. 安裝產生的apk。然後開啟模擬器(模擬器器一定要開啟才能安裝成功),然後開啟命令列 adb install mitalk_debug.apk(新生成apk的名稱) , 或者雙擊apk檔案也可以安裝
    安裝成功就可以再模擬器裡看到該應用的圖示了
    然後:建立專案(使用米聊apk)

  6. 開啟Eclipse,點選File->New一個Android Test Project ApkTest, 然後點選下一步的時候選擇This project(因為我們沒有米聊應用的原始碼),然後選擇要在哪個android版本上測試

  7. 在該專案下建立一個包,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();
}
}
  1. 右鍵該專案,選擇property然後選擇java build path, 選擇 Add External JARs,選擇下到的robotium.jar

  2. 在跑測試用例之前,還需要修改下AndroidManifest.xml檔案的android:targetPackage為被測應用的根的包名
    <instrumentation
    android:name="android.test.InstrumentationTestRunner"
    android:targetPackage="com.xiaomi.channel" />

    最後: run as android junit test,就可以進行測試了