昨天看到有人在博客中问,有没有考虑过,怎样去测试程序启动所耗费的时间,百度了下,想了个办法来实现。
不知道自己的想法是否正确,大家可以帮忙指点下。后面继续优化。
主要的是思想:程序启动后,获取页面某一处的加载完成的文字,获取完成,则说明加载完成,输出时间
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>