天天看點

Android自動化測試之Robotium學習(三)

    導入好robotium包之後,我們就可以在自己的工程中建立測試類進行測試。下面以我們開始建的RobotiumTest項目為例進行說明。

     代碼如下:

<b>package</b> com.android.adb.test;

<b>import</b> com.jayway.android.robotium.solo.Solo;

<b>import</b> android.test.ActivityInstrumentationTestCase2;

<b>public</b> <b>class</b> TestRobotium <b>extends</b> ActivityInstrumentationTestCase2

{  

    //此處為你要測試的apk的包名,這裡我測得是豌豆莢2

    <b>private</b> <b>static</b> <b>final</b> String TARGET_PACKAGE_ID ="com.wandoujia.phoenix2";

    //此處的classname是你要測得apk的主類名,也就是進入apk第一個activity的類名

    <b>private</b> <b>static</b> <b>final</b> String LAUNCHER_ACTIVITY_FULL_CLASSNAME ="com.wandoujia.phoenix2.NewWelcomeActivity";

    <b>private</b> <b>static</b> Class&lt;?&gt; launcherActivityClass;

    // 定義一個休眠時間 2000毫秒

    <b>private</b> <b>static</b> <b>final</b> <b>int</b> Sleeptime1 = 2000;

    <b>static</b>

    {

    <b>try</b>   

        launcherActivityClass = Class.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME);

    }

    <b>catch</b>(ClassNotFoundException e)

        <b>throw</b> <b>new</b> RuntimeException(e);

    @SuppressWarnings("unchecked")

    //建立與測試類同名的構造方法

    <b>public</b> TestRobotium()

    <b>super</b>(TARGET_PACKAGE_ID,launcherActivityClass);

    //定義一個Solo對象

    <b>private</b> Solo solo;

    <b>protected</b> <b>void</b> setUp()<b>throws</b> Exception

    //建立進入測試apk界面的方法

    solo= <b>new</b> Solo(getInstrumentation(),getActivity());

    //這是自己定義的一個測試case,隻是簡單進入界面,點選一下兩個選項

    <b>public</b> <b>void</b> test_Watch_001(){

    solo.sleep(Sleeptime1);

    solo.clickOnText("管理");

    solo.clickOnText("連接配接");

        solo.goBack();

    //測試類結束的方法

    <b>public</b> <b>void</b> tearDown()<b>throws</b> Exception

    <b>try</b>

    { 

        solo.finalize();

    <b>catch</b>(Throwable e)

        e.printStackTrace();

    getActivity().finish();

    <b>super</b>.tearDown();

}

      這是我以自己下載下傳的豌豆莢apk為測試例子,裡面的注釋已經很清楚了,除了一個自己寫的測試case外,其他的幾個方法,像TestRobotium()、setUp()、tearDown()方法,都是測試必須的。

       這裡主要說明的就是,你要找到你要測試的apk的包名和主類名,這個是必須的,沒有源碼可以,但是你要找不到這兩個,你的robotium測試就進行不下去了。如果你沒有源碼時,僅有一個apk,怎樣找到這個apk的包名和主類名呢,有兩種方法,先放在這裡,稍後再說。

      主類配置好後,你的robotium測試程式配置還沒有完成,還需要配置一下你的測試程式的AndroidManifest.xml檔案,這個大家肯定很熟悉了。

下面是我的檔案代碼:

&lt;?xml version="1.0" encoding="utf-8"?&gt;

&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.android.adb.test"

    android:versionCode="1"

    android:versionName="1.0" &gt;

 &lt;!-- 最小的api版本 --&gt;

&lt;uses-sdk android:minSdkVersion="14" /&gt;

&lt;!-- 添加這一句是減少一些控件點選失效的情況 --&gt;

&lt;supports-screens android:anyDensity="true" /&gt;

&lt;!-- 下面的配置是關鍵,正确填寫你要測試的apk的包名--&gt;

    &lt;instrumentation

        android:name="android.test.InstrumentationTestRunner"

        android:targetPackage="com.wandoujia.phoenix2" /&gt;

    &lt;application

        android:icon="@drawable/ic_launcher"

        android:label="@string/app_name" &gt;

        &lt;!-- 引用android中測試的包 --&gt;

        &lt;uses-library android:name="android.test.runner" /&gt;

    &lt;/application&gt;

&lt;/manifest&gt;

     同樣,代碼已經給出了注釋,這裡最要注意的,也是要正确添加你要測試的包名,以及引用robotium測試包。

       這個程式的配置是最基礎的,是每個robotium測試程式必須有的,其他的不同就是根據你測試的apk不同,書寫不同的測試case了。

       配置好之後,就可以選中你的項目,右鍵,點選“Run as”選項,然後選擇“Android Junit Test”選項,(不是“Android Application”選項),然後開始進行測試了。

       注意!注意!這裡有兩個前提:一、你的模拟器或着真機中已經安裝了這個你要測試的apk。(我的是豌豆莢)。二、你的apk已經去過簽名了,并且使用的是debug簽名,否則除非你知道你要測試程式的原始簽名是什麼。

      關于簽名,這也是一個很重要的問題,等到下篇進行詳解。這裡給出兩張上面的豌豆莢Robotium case運作成功的圖檔:

   (case中的點選“管理”選項)

      (case中的點選“連接配接選項”)

本文轉自 風泊海上 51CTO部落格,原文連結:http://blog.51cto.com/fengbohaishang/1001583

繼續閱讀