天天看点

只有apk时robotium测试程序启动相应时间(一)

昨天看到有人在博客中问,有没有考虑过,怎样去测试程序启动所耗费的时间,百度了下,想了个办法来实现。

不知道自己的想法是否正确,大家可以帮忙指点下。后面继续优化。

主要的是思想:程序启动后,获取页面某一处的加载完成的文字,获取完成,则说明加载完成,输出时间

package tiange.sina.voice.test;

import android.app.Activity;

import android.test.ActivityInstrumentationTestCase2;

import android.view.View;

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

public class LoadTest extends ActivityInstrumentationTestCase2{

//调用新浪好声音的包名和主类名

private static final String TARGET_PACKAGE_ID="tiange.sina.voice";

private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME="voice.activity.Start";

private static Class launcherActivityClass;

static {

try {

launcherActivityClass = Class.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME);

catch (ClassNotFoundException e) {

throw new RuntimeException(e);

}

}

public LoadTest() throws ClassNotFoundException {

super(launcherActivityClass);

private Solo solo;

    //启动新浪好声音

    public void setUp()throws Exception {

        solo=new Solo(getInstrumentation(),getActivity());

           }

    //因为启动程序时,会因为网络或者程序的一些原因导致响应时间较长,从而导致测试失败。

    //目前是这样处理的:增加一个循环,如果首页文字未显示就相当于在等待,本次测试最长设置一分钟

    public void testCase1()throws Exception {

    boolean flag =false;

    int i=0;

    while (i<60){

    solo.sleep(1000);

    flag=solo.searchText("人气作品");

    if (flag){

    break;

       }

    i++;

    }

    System.out.print(i);

        assertEquals(flag, true);

    }

    public void tearDown() throws Exception {

    solo.finishOpenedActivities();

    }

}

--------------------------------------------------------------------------------------------

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="tiange.sina.voice.test"

    android:versionCode="1"

    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="8" />

    <supports-screens android:anyDensity="true"/> 

    <instrumentation

        android:name="android.test.InstrumentationTestRunner"

        android:targetPackage="tiange.sina.voice" />

    <application

        android:icon="@drawable/ic_launcher"

        android:label="@string/app_name" >

        <uses-library android:name="android.test.runner" />

    </application>

</manifest>