参考文章: http://www.360doc.com/content/14/0213/16/7044580_352233197.shtml[[BR]]
http://blog.sina.com.cn/s/blog_44d19b500102v75z.html
Instrumentation类: http://developer.android.com/reference/android/app/Instrumentation.html
Android 原生的测试框架,测试程序和被测程序在同一进程下运行,能生成报告
UI层的自动化,通过反射获取窗口视图,查找控件属性
跨进程受到android进程安全限制
扩展后的框架:Robotium, Athrun等
Monkeyrunner http://developer.android.com/tools/help/MonkeyRunner.html
Android SDK提供,能够录制脚本,但采用像素形式
python脚本,使用monkeyrunner test.py来执行
结果的验证是通过截屏比对图片来实现,验证方式不够灵活
UIAutomator: http://developer.android.com/tools/help/uiautomator/index.html
Android提供的框架,支持SDK level 16及以上
打包成jar后push到模拟器中运行,调试相对Robotium不便(其实自己稍微封装下也还OK)
因为和测试应用是独立运行, 无法根据控件ID操作,支持跨进程测试!!!
Robotium:http://code.google.com/p/robotium/
基于instrumentation实现,提供的接口可以满足大部分自动化需求,使用方法简单
支持手势、webview、截图等操作
支持Remote Control方式
支持ant、maven打包,与jenkins结合较好
资料丰富,社区活跃,更新频繁
签名问题,待测App和测试App必须使用相同签名
通过solo对象提供操作方法,面向对象方面较差
不支持跨应用测试,Android进程安全限制
gradle配置
- 使用gradle新版测试的缺省目录是 androidTest
- 有些类比如ApplicationTestCase在API 17出现,所以编译的API要是用17以后的
具体的例子可以可以参考volley项目 https://android.googlesource.com/platform/frameworks/volley
采用testApplicationId,路径 androidTest
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.12.+'
}
}
apply plugin: 'android-library'
android {
compileSdkVersion 17
buildToolsVersion = 20
sourceSets {
defaultConfig {
testApplicationId 'com.android.volley.tests'
}
main {
assets.srcDirs = ['assets']
res.srcDirs = ['res']
aidl.srcDirs = ['src']
resources.srcDirs = ['src']
renderscript.srcDirs = ['src']
java.srcDirs = ['src']
manifest.srcFile 'AndroidManifest.xml'
}
androidTest.setRoot('tests')
androidTest.java.srcDirs = ['tests/src']
}
defaultConfig {}
productFlavors {
}
buildTypes {
}
}
dependencies {
}
google 官方Instrumentation测试例子
下载连接,使用API 19
修改 local.properties
有UI的测试,测试结果在/build/output/reports/androidTests/里面
robotium 官方例子
官网 https://code.google.com/p/robotium/
已经改成可以是用gradle 执行,gradle connectAndroidTest
下载
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.12.+'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
apply plugin: 'com.android.application'
android {
compileSdkVersion 17
buildToolsVersion '20.0.0'
sourceSets {
defaultConfig {
applicationId 'com.example.android.notepad'
minSdkVersion 14
targetSdkVersion 17
}
main {
setRoot('NotePad')
java.srcDirs = ['NotePad/src']
}
androidTest {
setRoot('NotePadTest')
java.srcDirs = ['NotePadTest/src']
}
}
buildTypes {
}
productFlavors {
}
}
dependencies {
compile 'com.jayway.android.robotium:robotium-solo:5.2.1'
}
使用uiautomator 测试
http://developer.android.com/tools/testing/testing_ui.html
先用自带工具 uiautomatorviewer 看页面元素,再写程序
代码如
getUiDevice().pressHome();
UiObject allAppsButton = new UiObject(new UiSelector()
.description("Apps"));
allAppsButton.clickAndWaitForNewWindow();
UiObject appsTab = new UiObject(new UiSelector()
.text("Apps"));
appsTab.click();
UiScrollable appViews = new UiScrollable(new UiSelector()
.scrollable(true));
appViews.setAsHorizontalList();
UiObject settingsApp = appViews.getChildByText(new UiSelector()
.className(android.widget.TextView.class.getName()),
"Settings");
settingsApp.clickAndWaitForNewWindow();
UiObject settingsValidation = new UiObject(new UiSelector()
.packageName("com.android.settings"));
assertTrue("Unable to detect Settings",
settingsValidation.exists());
monkey & monkey runner
./adb shell monkey -p com.juchaozhi -v 5000
常用命令参考 http://blog.csdn.net/huangbiao86/article/details/8490743
monkey是随机时间,MonkeyRunner? 是脚本录制和运行工具,两者没什么关系
官方介绍 http://developer.android.com/tools/help/monkeyrunner_concepts.html
sdk目录下 tools/monkeyrunner
录制只有一个设备情况下输入脚本可以录制, 按坐标位置记录, 感觉很难用,不建议使用
google官网上都不介绍录制了,回访的可以参加这个脚本 http://blog.csdn.net/shy871265996/article/details/9716407
from com.android.monkeyrunner import MonkeyRunner as mr from com.android.monkeyrunner.recorder import MonkeyRecorder as recorder device = mr.waitForConnection() recorder.start(device)
Attachments
-
ActivityInstrumentation.zip
(130.0 KB) -
added by liaojiaohe 11 years ago.
-
ExampleTestProject_v5.2.1.zip
(808.8 KB) -
added by liaojiaohe 11 years ago.
![(please configure the [header_logo] section in trac.ini)](http://www1.pconline.com.cn/hr/2009/global/images/logo.gif)