当前位置:首页 > 时尚生活

android单元测试 Android单元测试框架Espresso介绍

众所周知,UiAutomation是测试原安卓APP的最佳工具。随着DevOps的普及,我们需要尽快发现程序中的缺陷,所以单元测试变得非常重要。Android引入了Espresso测试框架。Espresso和UiAutomation最显著的区别是UiAutomation可以测试一个APP的多个接口,而Espresso只能测试一个APP的一个接口。此外,UiAutomation可以独立测试应用程序来创建特殊的项目,而Espresso必须构建在要测试的应用程序的同一目录下。让我给你简单介绍一下意式浓缩咖啡。

要执行浓缩咖啡,首先,在build.gradle()模块中进行以下配置。应用程序)。

android {

}

buildTypes {

发布{

minifyEnabled false

proguardFiles getDefaultProguardFile(' proguard-Android-optimize . txt '),' proguard-rules.pro '

}

}

包装选项{

排除“LICENSE.txt”

}

}

依赖项{

androidTestImplementation ' com . Android . support . test:runner:0.5 '

androidTestImplementation(' com . Android . support . test . espresso:espresso-core:2 . 2 . 2 ',{

排除组:' com.android.support ',模块:' support-annotations '

})}

这里要特别注意:com . Android . support . test:Runner,请用0.5版。最新版本1.0有bug。

同步完成后,我们在androidTest中创建待测试代码的测试代码。这是浓缩咖啡的代码。

package com . example . espresso . demo 4;

导入Android . support . test . filters . large Test;

导入Android . support . test . rule . activitytestrule;

导入Android . support . test . runner . androidjunit 4;

导入静态Android . support . test . espresso . espresso . OnView;

导入静态Android . support . test . espresso . action . ViewActions . click;

导入static Android . support . test . espresso . action . view actions . closesoftkeyboard;

导入静态Android . support . test . espresso . action . ViewActions . replace text;

导入static Android . support . test . espresso . assessment . viewcassessments . matches;

import static Android . support . test . espresso . matcher . root matchers . with ecorview;

导入static Android . support . test . espresso . matcher . viewmathers . isdisplayed;

导入static Android . support . test . espresso . matcher . viewmathers . with id;

导入static Android . support . test . espresso . matcher . ViewMatchers . with text;

导入static org . hamcrest . core . stringstartwith . starts with;

import static org . hamcrest . matchers . not;

导入org . JUnit . rule;

import org . JUnit . test;

import org . JUnit . runner . runwith;

@RunWith(AndroidJUnit4.class)

公共类mainactivityinstrumentation test {

私有静态最终字符串用户名= "古香";

私有静态最终字符串密码= " 123456 ";

@规则

公共活动规则<。主要活动>。mActivityRule =新活动规则<。>。(main activity . class);

@测试

@大型测试

public void testDemo4(){

onView(带Id(R.id.username))。执行(替换文本(用户名),关闭软键盘());

onView(带Id(R.id.password))。执行(替换文本(密码),关闭软键盘());

OnView(带文本(“登录”)。执行(click());

打开视图(带文本(以“用户名或密码”)开始)

。in root(with Recoverview(not(MactivityRule . GetActivity()。getWindow()。getDecorView())))

。check(matches(Isdisplayed()));

//onView(withId(R.id.tv1))。检查(匹配(带文本(预期文本)));

}

}

该代码的作用是在登录页面输入错误的登录名或密码,点击【登录】,测试系统是否给出“用户名或密码”的错误信息。

1、准备工作

package com . example . espresso . demo 4;

首先,确保测试代码包与产品代码包一致。

@规则

公共活动规则<。主要活动>。mActivityRule =新活动规则<。>。(main activity . class);

说要测试的是产品代码中的MainActivity.class模块,我们把测试模块变量赋给了变量mActivityRule。

2.定位

onView(带Id(R.id.username))。执行(替换文本(用户名),关闭软键盘());

在此代码中,操作由onView函数执行,而withId(R.id.username)由应用程序的R.id.username定位,其中Id名称是username,在r文件中定义,在产品代码中定义为R.java。除了定位withId,还可以使用withText(String):元素的文本名,withClassName():元素的类名,withContentDeion():元素的描述信息等。也可以通过多元素属性的联合定位来实现,比如:

onView(allOf(带Id(R.id.button_signin),带text(" Sign-in "));

请使用标识为“登录”,文本为“登录”的元素。此外,您还可以在定位中使用no函数来表示“否”,例如:

onView(AlloF(with id(r . id . button _ Sign in),not(with text(" Sign-out ")));

id为R.id.button_signin但文本不是Sign-in的元素。

除了用onView进行定位,还可以用onData进行定位。

onData(allOf(is(instance of(String . class)),is(" Americano "));

假设一个Spinner控件,我们要点击“Americano”,可以通过上面的语句定位。我们假设它是一个Listview,需要点击Listview中第二项的按钮,所以需要这样写。

onData(Matchers.allOf())

。in adapter view(id为(r . id . photo _ GridView))//list view的id

的位置。at位置(1) //

。onchildview(id为(r . id . imageview _ photo))//项中的子控件id

3.运作

执行之后是对定位的元素执行操作。常用方法如下。

ViewActions.replaceText()

清除空然后输入

ViewActions.typeText()

单击事件以输入指定的文本内容

ViewActions.click()

点击

ViewActions.scrollTo()

幻灯片

ViewActions.pressKey()

按键

ViewActions.clearText():

Clear 空文本

另外,上例中的“closeSoftKeyboard()”是输入字符后折叠键盘的意思。

4.断言

一般断言如下。

onView(带Id(R.id.tv1))。检查(匹配(带文本(预期文本)));

方法check()表示检查,matches()表示匹配,matches()方法中的参数与定位相同。经常使用匹配()方法和。

不存在()

断言视图不存在

匹配()

断言视图存在并匹配列

selectedDescendentsMatch()

断言指定的子元素存在,并且它们的状态与某些列匹配

代码

打开视图(带文本(以“用户名或密码”)开始)

。in root(with Recoverview(not(MactivityRule . GetActivity()。getWindow()。getDecorView())))

。check(matches(Isdisplayed()));

检查Toast是一个很有用的方法,如果使用UiAutomation的话很难实现。

http://www.kylinpet.com

1.《android单元测试 Android单元测试框架Espresso介绍》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《android单元测试 Android单元测试框架Espresso介绍》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/shehui/1052154.html

上一篇

伤口藏婚戒求婚 上演了让人又惊又喜的浪漫一幕

下一篇

小s坐轮椅被护送 调侃自己是“华人界坐轮椅最美女明星”

南京一程序员身陷传销组织 利用代码求救同事“秒懂”

南京一程序员身陷传销组织 利用代码求救同事“秒懂”

5月25日,南京某大型软件企业的年轻程序员小张万万没想到,在被MLM组织控制,几近绝望的情况下,他试图用电脑“代码”向同事发送帮助信息,他的程序员和同事居然“理解”了,前往天津协助警方成功营救。 在“五一”旅行中,我意外地...

南京程序员用代码求救 程序员同事们竟然“秒懂”

南京程序员用代码求救 程序员同事们竟然“秒懂”

网络映射 5月26日,南京程序员用代码求助,同事居然“秒懂”。程序员用代码求助。小张是南京一家大型软件企业的年轻程序员,他万万没有想到,当他被MLM组织控制,几乎绝望的时候,他试图用计算机“代码”向同事发送帮助信息。他的...

文本格式如何转换成数字格式 数值批量转换为文本的4种方法

  • 文本格式如何转换成数字格式 数值批量转换为文本的4种方法
  • 文本格式如何转换成数字格式 数值批量转换为文本的4种方法
  • 文本格式如何转换成数字格式 数值批量转换为文本的4种方法

5952 KORDT台式螺纹测试机,螺纹快速检测机CORDIVIT5952

台式螺纹试验机 桌面测量,探头是专用螺纹量规,扭矩可控。检查螺纹时,同时清洗螺纹,开关结果不受人为因素影响。快速高效,适合野外使用 别名:台式螺纹试验机、螺纹快速试验机 [简介] 27S台式螺纹试验机是一套测量内外螺纹的装置,内外螺纹的测量范围在3-60mm之间。驱动器安装在一个稳定的铸铁外...

感情测试 塔罗牌占卜: 测试未来感情发展会有怎样的一个相处?

  • 感情测试 塔罗牌占卜: 测试未来感情发展会有怎样的一个相处?
  • 感情测试 塔罗牌占卜: 测试未来感情发展会有怎样的一个相处?
  • 感情测试 塔罗牌占卜: 测试未来感情发展会有怎样的一个相处?
在线测试网速 一个在线工具箱 之 在线网速测试

在线测试网速 一个在线工具箱 之 在线网速测试

网速在线测试工具为您提供在线免费网速测试、Ping测试和路由测试。拥有网通、联通、电信、移动、长城宽带、彭博士等一批国内外综合速度测试点。欢迎使用。 点击↓“了解更多”使用此在线工具。  点击↓“了解更多”使用此在线工具。...

测速网速在线 一个在线工具箱 之 在线网速测试

测速网速在线 一个在线工具箱 之 在线网速测试

网速在线测试工具为您提供在线免费网速测试、Ping测试和路由测试。拥有网通、联通、电信、移动、长城宽带、彭博士等一批国内外综合速度测试点。欢迎使用。 点击↓“了解更多”使用此在线工具。  点击↓“了解更多”使用此在线工具。...

网速测速在线 一个在线工具箱 之 在线网速测试

网速测速在线 一个在线工具箱 之 在线网速测试

网速在线测试工具为您提供在线免费网速测试、Ping测试和路由测试。拥有网通、联通、电信、移动、长城宽带、彭博士等一批国内外综合速度测试点。欢迎使用。 点击↓“了解更多”使用此在线工具。  点击↓“了解更多”使用此在线工具。...