如何在Android Studio使用Espresso框架jmeter自动化测试框架

最近在网上看到UIAutomator 2.0版本,并且貌似使用的框架都改变了,所以今天就抽空试了下
We’re pleased to announce the release of UIAutomator 2.0! This version is a significant update from the previous release. Most importantly, UI Automator is now based on Android Instrumentation and you can build and run tests with the ‘./gradlew connectedCheck’ command.
大体的意思就是UIAutomator2.0基于的框架改成了android的instrumentatioin的框架。并且可以通过gradle进行配置了,虽然说实话不太清楚为什么要将UiAutomator的框架改成instrumentation,但是我们先试试大概答题的环境出来吧。
下来我们就来试试通过Android Studio 来进行UiAutomator的配置吧
UiAutomator2.0的jar包并不是在以前SDK/platforms/android-19/下。现在我们要这么做
通过Android SDK Manager中的 Android Support Repository 项进行安装
下载下来的jar包的路径为/extras/android/m2repository
新建一个android项目,编写一个简单的应用
在build.gradle中配置依赖项:
dependencies {
androidTestCompile 'com.android.support.test:runner:0.3'
// Set this dependency to use JUnit 4 rules
androidTestCompile 'com.android.support.test:rules:0.3'
// Set this dependency to build and run Espresso tests
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2'
// Set this dependency to build and run UI Automator tests
androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1'
设置AndroidJunitRunner为默认的testInstrumentationRunner
defaultConfig {
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
下来就编写属于你自己的测试代码了,在androidTest目录下面新建测试类
* Created by cvtpc on .
public class LoginTest extends InstrumentationTestCase {
protected UiDevice device = null;
protected String appName = "magicCard";
public void runApp(String appName) throws UiObjectNotFoundException, RemoteException {
device = UiDevice.getInstance(getInstrumentation());
device.pressHome();
device.waitForWindowUpdate("", 2000);
UiObject2 allAppsButton = device.findObject(By.desc("Apps"));
allAppsButton.click();
device.waitForWindowUpdate("", 2000);
UiScrollable appViews = new UiScrollable(new UiSelector().scrollable(true));
appViews.setAsHorizontalList();
UiObject settingsApp = appViews.getChildByText(new UiSelector().className(TextView.class.getName()), appName);
settingsApp.clickAndWaitForNewWindow();
assertTrue("Unable to detect app", settingsApp != null);
public void setUp() throws RemoteException, UiObjectNotFoundException {
this.runApp(appName);
public void tearDown() throws RemoteException, UiObjectNotFoundException {
public void testUS1() {
UiObject2 usernameLabel = device.findObject(By.clazz(TextView.class.getName()).text("Username"));
assertTrue("Username label not found", usernameLabel != null);
基于Instrument的方便一点就是不需要remote debug的方式进行调试。并且做参数化之类的也方便了很多。
本文已收录于以下专栏:
相关文章推荐
听说不会单元测试的Android程序员不是一个合格的程序员,,好吧,虽然学习Android好久,最近在使用AndroidStudio,但不知道AndroidStudio自带单元测试功能,今天了解了一下...
Android Studio中进行单元测试和UI测试1. 概述当前很多移动团队都是采用敏捷模式开发,在快速开发和版本迭代中,往往也忽略了单元测试和Espresso测试,其实我自己在之前的N多项目当中都...
1.预览(Over view):
在这篇文章里头呢,你可以学到如何在Android studio中创建一个测试项目,编写测试单元跑在你的开发机器上,并且用真机进行界面测试。
那你会学到什么...
这两天产品经理向我丢来一个新需求,需要在项目里添加一个视频录制的功能,正好是我没做过的,于是研究了一番。在网上搜索了一些案例,但是都是不完整的,要不就是分辨率有问题的,要不就是声音有问题的,要不就是实...
前言:这几
在学习Android、JUnit的过程中,随着学习的深入,发现相关的内容越来越多,将这些类按照继承关系整理如下:
Test—TestCase—AndroidTestCaseTest—TestCa...
前面讲到am怎么启动cts的测试进程,接下来了解下测试用例是如何被运行的。
1.InstrumentationTestRunner.java
首先进入onCreate方法:
// Apk pat...
By: 海市蜃楼 | In:
Android开发
在前一篇文章JUnit初步解析中,我们简要了解了JUnit的主要功能:
管理测试用例;定义测试代码;定义测试环境;检测测...
最近没有啥idea,借着文献笔记《AppIntent - Analyzing Sensitive Data Transmission in Android for Privacy Leakage De...
网上搜了很久,没发现一篇靠谱的,很多都是早起的Intellij和gradle版本,和现在的都不合适
这里的教程是指 Intellij 2017,以及Android Studio 2.2以上,gradl...
他的最新文章
讲师:姜飞俊
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)Espresso 自动化测试框架介绍 - 简书
Espresso 自动化测试框架介绍
Espress介绍
谷歌13年的时候开源了espress,谷歌的思路是,等到它足够成熟和稳定以后,将其迁移到Android SDK中,以此可见对他的重视。Google使用Espresso测试了他们自己的超过30个应用程序,包括G+、Maps和Drive。下面对Espresso做一个基本介绍Espresso测试是非常容易实现的,它由三部分组成:ViewMachers:寻找用来测试的View。ViewActions:发送交互事件。ViewAssertions:检验测试结果。
先直接放用法,以下用例的执行效果是直接打开MainActivity,执行showMain中的用例
onView(ViewMachers)
.preform(ViewActions)
.check(ViewAssertions)
public IntentsTestRule mainActivityIntentsTestRule = new IntentsTestRule(MainActivity.class);
public void showMain(){
//是否选中
onView(withId(R.id.tv_username)).check(matches(isDisplayed()));
//测试点击
onView(withId(R.id.tv_username)).perform(click());
//根据文本内容匹配
String username ="HELLO Brian123!";
onView(withId(R.id.tv_username)).check(matches(withText(username)));
Espresso 备忘录
方便你在开发过程中快速查阅。它包含了大部分可用的Matchers,ViewActions, 和ViewAssertions。pdf 格式的离线版本在此:
搭建步骤项目目录/build.gradle中的ext版本号:
// Define versions in a single place
// Sdk and tools
minSdkVersion =15
targetSdkVersion =22
compileSdkVersion =23
buildToolsVersion ='23.0.3'
//app Code
versionCode =1
versionName ="1.0"
// App dependencies
supportLibraryVersion ='23.4.0'
junitVersion ='4.12'
mockitoVersion ='1.10.19'
powerMockito ='1.6.2'
hamcrestVersion ='1.3'
runnerVersion ='0.4.1'
rulesVersion ='0.4.1'
espressoVersion ='2.2.1'
然后在android studio的项目目录下/app/build.gradle中配置
testCompile"junit:junit:$rootProject.ext.junitVersion"
androidTestCompile"junit:junit:$rootProject.ext.junitVersion"
//Android Testing Support Library's runner and rules
androidTestCompile"com.android.support.test:runner:$rootProject.ext.runnerVersion"
androidTestCompile"com.android.support.test:rules:$rootProject.ext.runnerVersion"
// Resolve conflicts between main and test APK:
androidTestCompile"com.android.support:support-annotations:$rootProject.supportLibraryVersion"
androidTestCompile"com.android.support:support-v4:$rootProject.supportLibraryVersion"
androidTestCompile"com.android.support:recyclerview-v7:$rootProject.supportLibraryVersion"
// Espresso UI Testing
androidTestCompile"com.android.support.test.espresso:espresso-core:$rootProject.espressoVersion"
androidTestCompile ("com.android.support.test.espresso:espresso-contrib:$rootProject.espressoVersion")
androidTestCompile"com.android.support.test.espresso:espresso-intents:$rootProject.espressoVersion"
compile"com.android.support.test.espresso:espresso-idling-resource:$rootProject.espressoVersion"
// Android Testing Support Library's runner and rules
androidTestCompile"com.android.support.test:runner:$rootProject.ext.runnerVersion"
androidTestCompile"com.android.support.test:rules:$rootProject.ext.runnerVersion"
Espresso和UIAutomator的区别Espresso是个功能强大、效率很高的Android自动化测试框架,但是他有一个重要的局限,你只能在被测试app的Context中操作。所以应用的推送、从另一个应用程序进入、处理通知栏消息等功能无法在Espresso中使用,需要混合UIAutomator使用其他资料参考 官方文档翻译
谷歌自动化测试demo主题信息(必填)
主题描述(最多限制在50个字符)
申请人信息(必填)
申请信息已提交审核,请注意查收邮件,我们会尽快给您反馈。
如有疑问,请联系
CSDN &《程序员》编辑/记者,投稿&纠错等事宜请致邮
你只管努力,剩下的交给时光!
如今的编程是一场程序员和上帝的竞赛,程序员要开发出更大更好、傻瓜都会用到软件。而上帝在努力创造出更大更傻的傻瓜。目前为止,上帝是赢的。个人网站:。个人QQ群:、
个人大数据技术博客:Android 手机自动化测试工具有哪几种? - 知乎1943被浏览277252分享邀请回答sikuli.org),基于优秀的图像对比库opencv的测试工具,测试脚本使用Python编写,非常强大。如果你的app没有源码,可以选择它;或者你想做系统测试(跨app的测试),也可以选择它。其它的还是用下面说的那些个吧。我通过其核心包sikuli-script.jar实现了android的sikuli化,暂时不打算开源。其实原理挺简单的,认真看过sikuli源码的应该都能写出来。 看lz的意思应该只是想问应用层的,我来说点应用层的
先说说开源的吧:
RobotiumMonkeyrunnerRobolectricCTS还有个新兴的测试工具,以前在GitHub看到,现在找不到了,好像是BDD类型的语法;现在还不成熟。
另外基于web的测试也有基于Selenium Webdriver 的 Android WebDriver:
基于Remote Server的:官方提供了java接口的,但是Python版的官方里面却没有。我非常喜欢Python,所以自己实现了并且开源到了GitHub: 有问题大家可以提到上面
基于Instrumentation的:已经在Android SDK r14里面可以安装了不开源的就多了,不过我见过的一般是以下几种思路:
1. 基于Android Java Instrumentation框架:
基于Robotium,比如bitbar的产品:基于Instrumentation,那就海了去了,很多公司自家写的工具都基于这个;另外Robotium就是基于这个的2. 基于Android lib层的各种命令,比如sendevent,getevent, monkey, service这些,然后用各种语言封装
MonkeyRunner还是很有前景的,Google自己弄的。现在最新的dev版本已经有支持UI的id操作的EasyMonkey了。可以git clone git://看看10610 条评论分享收藏感谢收起15317 条评论分享收藏感谢收起查看更多回答3 个回答被折叠()在日常的测试中,我们还可能碰到许许多多的测试点,如Toast内容的验证,AutoCompleteText的选择等。 这些测试项都有一个共同的特点。即不在主UI布局的结构(layout,及其include的layout)之中,是不能直接定位的。 所以这里就需要使用inRoot( ) 了。
Toast 测试
众所周知UiAutomator是不支持Toast的验证的,为此很多人都想了很多的办法,结果当然都是有些无奈的。 Espresso 很简单的就解决了此问题。
我们还是继续使用之前的栗子,只是说我们点击书籍的时候不进入到bookDetailActivity界面,而是弹出对应bookTitle的Toast。 代码不贴了,很简单。我们看看要如何验证Toast的内容呢。
onData(withBookTitle("Effective Java ")).inAdapterView(allOf(withId(R.id.list),isDisplayed())).perform(click());
onView(withText("Effective Java ")).inRoot(withDecorView(not(mRules.getActivity().getWindow().getDecorView()))).check(matches(isDisplayed()));
以上就是测试的代码了。很简单。这个代码还是有点不太明白,后续会跟进下。
AutoComplete 测试
这个测试项 可以参考
public void autoCompleteTextView_oneSuggestion() {
onView(withId(R.id.auto_complete_text_view))
.perform(typeTextIntoFocusedView("South "), closeSoftKeyboard());
onView(withText("South China Sea"))
.inRoot(withDecorView(not(is(mActivity.getWindow().getDecorView()))))
.check(matches(isDisplayed()));
onView(withText("Southern Ocean"))
.inRoot(withDecorView(not(is(mActivity.getWindow().getDecorView()))))
.check(doesNotExist());
栗子都已经很详细了。这里就不说了。
Toast的验证解决。。。
本文已收录于以下专栏:
相关文章推荐
通过写这篇文章从开源中国站上面看了很多,也从那里将开源软件的基本的介绍和下载地址拷贝到了文章当中,总体给我的一个感受就是阿里的开源实在太强大了,多到需要花大量的时间去了解。今天写这篇文章主要是对阿里开...
用过UiAutomator的同学其实都应该清楚,SeekBar是一个相当大的痛点,因为我们能够做到最多的就是获取到SeekBar的坐标,再来点击相应的一个坐标。那么问题来了。我根本就不知道我点击的结果...
在Android调试过程中经常会出现程序出现的结果不是我们预期的结果,那就需要加Log打印调试,看调用过程是否正确,此时就需要打印程序的调用栈,特别是Android代码相当庞大,打印堆栈更有利于我们分...
前面谈到的Listview的测试都是单独的一个。但是往往现在的App的设计基本是ViewPager+Listview/RecyclerView 这里的RecyclerView的处理与ListView不...
在上一篇文章我们已经知道了简单的onData的使用了,但是我们都知道,在真正的测试中,我们的ListView或者GridView不可能为这么简单的数据的,所以我们还是需要用一些复杂的数据来进行测试。
今天在论坛上看到一个朋友提问:
action.press(x=252, y=879).wait(10000).move_to(x=540, y=879).release().perform()
单元测试 测试 activity
在之前的文章中,我们简单介绍了Espresso的使用。通过onView()方法我们可以快速定位到界面上我们需要测试的目标元素。onView()比较适用于UI比较简单的情况,在不需要过于复杂的匹配条件的...
前面我们已经简单的介绍了Espresso的环境搭建
Espresso 自动化测试(一) 以及有关Espresso的组件构成。下来我们来看看Espresso的一些API,这里有一张图片包含了我们前面说...
前言由于Espresso 也是用于做UI自动化测试的,所以我们难免要拿它来跟UiAutomator进行比较了。 使用过UiAutomator的都应该知道,它不支持中文的输入,为此Appium引入了专门...
他的最新文章
讲师:姜飞俊
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)}

我要回帖

更多关于 自动化测试框架 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信