对于系统内置apk的测试:
1、首先,创建tests目录,格式为:tests/被测apk包名/tests,如:
FmRadio/tests/src/com/huawei/android/FMRadio/tests。
2、在tests目录下创建 Android.mk文件,内容如下:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
# We only want this apk build for tests.
LOCAL_MODULE_TAGS := tests
LOCAL_CERTIFICATE := platform
LOCAL_JAVA_LIBRARIES := android.test.runner
LOCAL_STATIC_JAVA_LIBRARIES := librobotium4 junit-report
#Include all test java files.
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_PACKAGE_NAME := FmRadioTests
LOCAL_INSTRUMENTATION_FOR := FmRadio
include $(BUILD_PACKAGE)
# Use the folloing include to make our test apk.
include $(call all-makefiles-under,$(LOCAL_PATH))
其中,LOCAL_STATIC_JAVA_LIBRARIES := librobotium4 junit-report,
ibrobotium4 为编写测试代码时要用到的jar包,junit-report为生成测试报告时要用到的jar 包;LOCAL_PACKAGE_NAME和 LOCAL_INSTRUMENTATION_FOR 修改相应值就可以,其他的不变。
3、在tests目录下创建AndroidManifest.xml文件,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.huawei.android.FMRadio.tests">
<application>
<uses-library android:name="android.test.runner" />
<!-- uses-library android:name="com.jayway.android.robotium" /> -->
</application>
<instrumentation
android:name="com.zutubi.android.junitreport.JUnitReportTestRunner"
android:targetPackage="com.huawei.android.FMRadio" />
<uses-permission android:name="android.permission.RUN_INSTRUMETATION" />
</manifest>
其中,package为测试类所在的包名,一般是:被测apk包名/tests;
android:name为执行自动化测试时的一个标志,可以写成(测试 类所在包名).测试类名,如果需要生成测试报告,则写成:
com.zutubi.android.junitreport.JUnitReportTestRunner;
Android:targetPackage为被测Activity所在包名。
4、在tests/被测apk包名/tests目录下创建测试类继承 ActivityInstrumentationTestCase2<被测Activity>,测试类主要包含 以下内容:
1)必须拥有一个构造方法,如:
Public RobotiumTest(){
super("被测Activity包名", 被测Activity.class);
}
2)重写setUp()方法
用来做初始化工作,如:
mSolo = new Solo(getInstrumentation(), mFmRadioActivity);
3)重写tearDown()方法
主要用来实现测试完成后的垃圾回收,关闭Activity,如:
try {
mSolo.finalize();
} catch (Throwable t) {
t.printStackTrace();
}
mSolo.finishOpenedActivities();
super.tearDown();
4)编写以test开头的测试case
如:testCase1,测试case可以编写多个,主要是Solo类进行了点击、长按、滑动等操作;当运行后,每个测试 case都会执行一次setUp()和tearDown()方法。
5、执行测试类
1)编译测试类:
通过mmm .../tests -B 编译test目录,编译成功后会生成一 个apk文件,通过 adb install 命令安装到手机中。
2)执行测试:
首先可用adb shell pm list instrumentation命令查看手机中的测试用例,然后通过adb shell am instrumentation -w 目标用例命令来执行测试用例,成功执行后生成的测试报告会保存在手机的data/data/被测Activity所在包名/file 目录下。