您的位置:首页 > 编程语言

使用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代码如下:

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文件就保存了测试覆盖率的信息。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息