使用Jacoco和Gradle获得Robotium脚本代码覆盖率和分支覆盖率
2016-05-26 00:00
645 查看
摘要: Jacoco是一个获取java测试覆盖率的工具,在Android Studio2.0中已经集成了Jacoco,测试人员可以很方便地获取Android测试覆盖率。在本文中,我写了一个简单的demo来展示如何使用Jacoco在Android Studio中获得测试覆盖率。
首先在Android Studio中新建一个项目。编写MainActivity和布局文件,demo中布局文件就只有两个EditText用于输入数字,两个Button,一个算乘法,一个算加法,一个TextView显示运算结果。MainActivity代码如下:
在src->androidTest->java->com.example.demo目录下新建一个java文件,起名为ApplicationTest,在这个java文件里写自己的测试代码,如下:
这样测试脚本就准备好了,可以先运行一下脚本看看通不通过。
接下来,打开build.gradle,在buildTypes中插入以下代码:
这时候,Android Studio会让你同步这个build.gradle文件,点击上方的sync now即可。
在Android Studio右侧边缘位置,会看到一个Gradle按钮,点开它,可以看到这样的界面:
找到Demo1(这里我用的是Demo1),点左侧的三角形,依次点Tasks->Other,找到createDebugAndroidTestCoverageReport,右键它,点第一个run...。一切正常的话过几秒钟可以在项目目录->build->reports->coverage->debug下找到index.html,这个html文件就保存了测试覆盖率的信息。
首先在Android Studio中新建一个项目。编写MainActivity和布局文件,demo中布局文件就只有两个EditText用于输入数字,两个Button,一个算乘法,一个算加法,一个TextView显示运算结果。MainActivity代码如下:
package com.example.myapplication; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class MainActivity extends Activity implements View.OnClickListener { private EditText editText1; private EditText editText2; private Button button1; private Button button2; private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText1 = (EditText)findViewById(R.id.editText1); editText2 = (EditText)findViewById(R.id.editText2); button1 = (Button)findViewById(R.id.button1); button2 = (Button)findViewById(R.id.button2); tv = (TextView)findViewById(R.id.textView1); button1.setOnClickListener(this); button2.setOnClickListener(this); } @Override public void onClick(View v) { // TODO Auto-generated method stub String text1 = editText1.getText().toString(); String text2 = editText2.getText().toString(); int value1 = Integer.parseInt(text1); int value2 = Integer.parseInt(text2); switch (v.getId()) { case R.id.button1: int result1 = value1+value2; tv.setText(result1+""); break; case R.id.button2: int result2 = value1*value2; tv.setText(result2+""); break; default: break; } } }
在src->androidTest->java->com.example.demo目录下新建一个java文件,起名为ApplicationTest,在这个java文件里写自己的测试代码,如下:
package com.example.demo; import com.jayway.android.robotium.solo.Solo; import android.annotation.SuppressLint; import android.test.ActivityInstrumentationTestCase2; public class ApplicationTest extends ActivityInstrumentationTestCase2<MainActivity> { private Solo solo; @SuppressLint("NewApi") public ApplicationTest() { super(MainActivity.class); } @Override public void setUp() throws Exception { solo = new Solo(getInstrumentation(), getActivity()); } @Override public void tearDown() throws Exception { solo.finishOpenedActivities(); } /*------ Test Core Function ------*/ public void testAdd() throws Exception{ solo.enterText(0,"5"); solo.enterText(1,"7"); solo.clickOnButton("Add"); boolean test_result = solo.searchText("12"); assertTrue("Test: Click on Button Add.", test_result); } }
这样测试脚本就准备好了,可以先运行一下脚本看看通不通过。
接下来,打开build.gradle,在buildTypes中插入以下代码:
debug { testCoverageEnabled = true }
这时候,Android Studio会让你同步这个build.gradle文件,点击上方的sync now即可。
在Android Studio右侧边缘位置,会看到一个Gradle按钮,点开它,可以看到这样的界面:
找到Demo1(这里我用的是Demo1),点左侧的三角形,依次点Tasks->Other,找到createDebugAndroidTestCoverageReport,右键它,点第一个run...。一切正常的话过几秒钟可以在项目目录->build->reports->coverage->debug下找到index.html,这个html文件就保存了测试覆盖率的信息。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories