Android UI测试框架Espresso以及代码覆盖率jacoco的使用
2017-06-14 15:23
1221 查看
该文章主要分为两个部分,第一部分大概记录一下Espresso的使用,第二部分是jacoco的使用,
一:Espresso的使用
Espresso是Google开源的安卓ui自动化测试框架,在最新的Android studio中已经将其加入了,所以很多情况我们都不需要去配置
1.配置build.grandle:(我的studio版本是2.3.3已经集成了Espresso框架)
2.在我的例子中,是有一个textView和2个button,textView最初显示Hello,当点击第一个按钮之后textView显示 i am click,当点击第二个按钮的时候显示hello,针对这个例子编写MainActivity
3.编写好MainActivity 的类,右击选中MainActivity类名,选择Go to–>test
3.1
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/ca3019bb0b48f87a547cff8e761641db)
3.2创建MainActivityTest
选择create new Test(因为我这里创建过了,所以会显示MainActivityTest,第一次的话选择create new Test即可)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/5dceda51bad4bf48c136240245ddce2d)
4.编写MainActivityTest:
这里用的是Espresso自动化测试框架,@Rule指的是这里要对哪个类进行测试
这里一共写了大概6个方法
(1)找到id为tv_show的控件检查它是否正常显示了
(2)找到text是Hello的控件检查它是否显示(这里就是我之前MainActivity中的textView,初始的时候显示值为Hello)
(3)id为bt_onclick的控件完成点击事件
(4)text为”i am click”的控件是否显示(也就是说点击后,textView的值变为i am click)
(5)id为bt_reback的控件完成点击时间
(6)text为hello的控件是否显示(点击完bt_reback按钮后text是否变为hello)
完成以上代码就可以进行简单的测试了,注意:关闭手机的动画(系统–设置–开发者选项–缩放动画等,和动画有关的都关闭,不然espresso测试会报错!)
选中MainActivityTest右击–》run MainActivityTest在run窗口里面你会看到执行是否成功,如下图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/6ac085c5fb8b19e524cd873feccb6f41)
如果说最后一行我之前注释的代码,打开,就会报错,因为点击完reback按钮textView的值不是 i am click,就会出现下面的错误图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/14e4fd3a13bf67a0b8260fd5d4583d8b)
Espresso还可以在浏览器当中结果,具体的方法就是结合studio 的grandle,如下图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/e36f3ea4604d8787743b807c6dd0d6f9)
执行connectedDebugAndroidTest之后会在build–>reports–>connected–>index.html(用浏览器打开就可以看到你的测试分析了)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/b10f18a8c3f07782d119fc7f617f8b85)
注意:执行的时候要保持手机显示的状态,它会自动的去执行你要测试的一系列动作,比如点击,显示等
二 jacoco的使用:
1.配置:
其实gradle自带的有jacoco插件的,只需要引入就好了,打开build.gradle,在第一行添加插件:
但好像最新的studio中不配置这句话也可以用
debug 里面配置testCoverageEnabled true
2.然后直接在grandle 中选择createDebugCoverageReport运行就能得到代码覆盖率分析文件了
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/273377dd8f6d77e9dc74139bad6e6314)
3.在build–reports–coverage–index.html用浏览器打开,可以看到覆盖率分析文件
![](https://oscdn.geek-share.com/Uploads/Images/Content/201706/7704122140de197cb2be126995a68342)
从这里可以看到你的代码中有哪些已经测试过,哪些没有测试过!,测试分支那些测过,哪些没有测试过!
以上就是Espresso以及jacoco 的简单入门应用
一:Espresso的使用
Espresso是Google开源的安卓ui自动化测试框架,在最新的Android studio中已经将其加入了,所以很多情况我们都不需要去配置
1.配置build.grandle:(我的studio版本是2.3.3已经集成了Espresso框架)
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' })
2.在我的例子中,是有一个textView和2个button,textView最初显示Hello,当点击第一个按钮之后textView显示 i am click,当点击第二个按钮的时候显示hello,针对这个例子编写MainActivity
3.编写好MainActivity 的类,右击选中MainActivity类名,选择Go to–>test
3.1
3.2创建MainActivityTest
选择create new Test(因为我这里创建过了,所以会显示MainActivityTest,第一次的话选择create new Test即可)
4.编写MainActivityTest:
这里用的是Espresso自动化测试框架,@Rule指的是这里要对哪个类进行测试
@Rule public ActivityTestRule mActivityRule = new ActivityTestRule(MainActivity.class);
这里一共写了大概6个方法
(1)找到id为tv_show的控件检查它是否正常显示了
(2)找到text是Hello的控件检查它是否显示(这里就是我之前MainActivity中的textView,初始的时候显示值为Hello)
(3)id为bt_onclick的控件完成点击事件
(4)text为”i am click”的控件是否显示(也就是说点击后,textView的值变为i am click)
(5)id为bt_reback的控件完成点击时间
(6)text为hello的控件是否显示(点击完bt_reback按钮后text是否变为hello)
@Test public void testInit() throws Exception { onView(withId(R.id.tv_show)).check(matches(isDisplayed())); onView(withText("Hello")).check(matches(isDisplayed())); onView(withId(R.id.bt_onclick)).perform(click()); onView(withText("i am click")).check(matches(isDisplayed())); onView(withId(R.id.bt_reback)).perform(click()); onView(withText("hello")).check(matches(isDisplayed())); // onView(withText("i am click")).check(matches(isDisplayed())); }
完成以上代码就可以进行简单的测试了,注意:关闭手机的动画(系统–设置–开发者选项–缩放动画等,和动画有关的都关闭,不然espresso测试会报错!)
选中MainActivityTest右击–》run MainActivityTest在run窗口里面你会看到执行是否成功,如下图:
如果说最后一行我之前注释的代码,打开,就会报错,因为点击完reback按钮textView的值不是 i am click,就会出现下面的错误图:
Espresso还可以在浏览器当中结果,具体的方法就是结合studio 的grandle,如下图:
执行connectedDebugAndroidTest之后会在build–>reports–>connected–>index.html(用浏览器打开就可以看到你的测试分析了)
注意:执行的时候要保持手机显示的状态,它会自动的去执行你要测试的一系列动作,比如点击,显示等
二 jacoco的使用:
1.配置:
其实gradle自带的有jacoco插件的,只需要引入就好了,打开build.gradle,在第一行添加插件:
apply plugin: 'jacoco'
但好像最新的studio中不配置这句话也可以用
debug 里面配置testCoverageEnabled true
buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } debug{ testCoverageEnabled true } }
2.然后直接在grandle 中选择createDebugCoverageReport运行就能得到代码覆盖率分析文件了
3.在build–reports–coverage–index.html用浏览器打开,可以看到覆盖率分析文件
从这里可以看到你的代码中有哪些已经测试过,哪些没有测试过!,测试分支那些测过,哪些没有测试过!
以上就是Espresso以及jacoco 的简单入门应用
相关文章推荐
- 【android测试】jacoco做功能测试代码覆盖率统计
- [Android]使用Emma进行单体测试代码覆盖率分析
- 使用Android Studio进行UI测试与Record Espresso Test自动生成测试代码
- Android 单元测试之Espresso - Google官方UI测试框架
- android项目的JaCoCo代码覆盖率入门使用
- 如何在Eclipse上使用Espresso测试框架测试Android App
- 使用dropwizard(4)-加入测试-jacoco代码覆盖率
- android gradle + junit +jacoco +sonarscaner(sonarrunner) 获取单元测试覆盖率以及代码质量
- Android UI测试之Espresso使用
- 实用Jacoco代码覆盖率Android集成与使用
- 使用dropwizard(4)-加入测试-jacoco代码覆盖率
- AndroidStudio中使用Jacoco统计Android应用程序代码覆盖率
- 收集Android程序测试代码覆盖率
- android测试框架Junit使用
- 使用gcov完成代码覆盖率的测试
- android游戏开发框架libgdx的使用(十一)—Skin和UI配置文件的使用
- 使用QUnit 框架测试Javascript代码
- android TraceView使用以及listview 的性能优化测试(一)
- Android下多线程同UI交互的Handler框架代码
- [Java测试]使用Cobertura度量代码覆盖率