使用robotium對android應用進行自動化測試

來源:互聯網
上載者:User

標籤:android   style   http   color   os   io   使用   java   ar   

所需要的環境:

1、eclipse

2、android development tools(ADT)

3、software develoment kit(SDK)

4、JDK

5、robotium

1-4的環境內容為android應用剛開發環境的搭建過程,不再贅述。

robotium jar包的下載:

http://code.google.com/p/robotium/downloads/list下下載jar包:robotium-solo-3.1.jar(當然會有更新的)


1、在eclipse中建立一個工程:

android工程:

File -> new -> Project -> Android Application Project  -> next

(1)在New Android Application中設定應用程式名稱字、工程名字和包名

(2)選擇開發使用的SDK的版本和最低限制的SDK版本

然後一步一步到finish。


Android Test Project :

官網上可以建立一種叫做測試工程的工程:

File -> new -> Project -> Android Test Project  -> next -> 設定名字,next -> select test target視窗中,選擇要測試的project或者選擇this project以後next -> finish

此時的建立的工程的src裡面會有初始的包。

註:如果是一個沒有其他的android工程的空間裡,建立一個Test Project工程會出錯。解決辦法就是建立一個Android Application Project工程,裡面可以什麼都沒有。


以上兩個工程在我看來沒有太大的區別,就是包名可能不同,test工程會按照選定的project裡的包名後面加一個test後產生一個包。AndroidManifest.xml不太相同,在做測試的時候可以把AndroidManifest.xml修改為測試所需的。

2、在該工程下建立一個libs檔案夾,檔案夾中包含所需要的包,我們這裡暫時只需要將下載的robotium的包加入。

3、在build path裡面將robotium包加上即可

4、修改AndroidManifest.xml為以下形式

<?xml version="1.0" encoding="utf-8"?>
<!-- package為測試的包名,需要自己制定 -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="testPackage"
    android:versionCode="1"

    android:versionName="1.0" >


    <!-- 設定sdk的版本,必須有 -->
    <uses-sdk android:minSdkVersion="10" />

    <!-- 設定啟動並執行類,這裡指定為android.test.InstrumentationTestRunner -->
    <!-- targetPackage指定測試的包名 -->
    <!-- 下面這段必須 -->
    <instrumentation
        android:name="android.test.InstrumentationTestRunner"
        android:targetPackage="PackagetoTest" />

    <!-- 注意需要<uses-library>這個是必須的 -->
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <uses-library android:name="android.test.runner" />
    </application>

</manifest>

5、在我們設定的測試包中建立一個類檔案

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;


import android.test.ActivityInstrumentationTestCase2;


import com.jayway.android.robotium.solo.Solo;

//必須要繼承自ActivityInstrumentationTestCase2類
public class Test1 extends ActivityInstrumentationTestCase2{
private static final String TARGET_PACKAGE_ID = target_package; //需要自己指定需要測試的包的名字
private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME =target_launcher;//自己指定啟動應用的類名
private static Class launcherActivityClass;
private Solo solo;
static{
try
{
launcherActivityClass=Class.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME);

catch (ClassNotFoundException e){
throw new RuntimeException(e);
}
}

//建構函式,需要調用super的構造
public TestNumber() {
super(TARGET_PACKAGE_ID,launcherActivityClass);
// TODO Auto-generated constructor stub
}

 

//測試案例,需要以test開頭,這是junit3以前的定義

public test1(){

solo.clickOnScreen(555,555);

}

@Override
public void setUp() throws Exception {
// TODO Auto-generated method stub
solo = new Solo(getInstrumentation(),getActivity());
}

@Override
public void tearDown() throws Exception {
// TODO Auto-generated method stub
try{
solo.finishOpenedActivities();
}catch(Throwable e){
e.printStackTrace();
}

super.teardown();
}

}

按照以上方式用例寫好。

6、由於測試的工程的簽名需要與我們拿到的包的簽名一致,因而需要重簽名。

(1)解壓apk包,將裡面的meta-inf檔案夾刪掉

(2)打包刪掉了meta-inf檔案夾後的包為.apk檔案

(3)在dos介面進入到需要測試的apk的檔案夾中,然後運行:

jarsigner -keystore /debug.keystore -storepass android -keypass testapkname.apk命令進行安裝


8、在eclipse裡面滑鼠右鍵,run as -> Android Junit Test方式運行即可。

使用robotium對android應用進行自動化測試

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.