前言
本文主要通过样例来简要介绍Android单元测试基于AndroidTestCase类,主要针对sdk这种不涉及ui的但是需要依赖AndroidSDK的场景,并可以生成代码的覆盖率报告。
Android Unit Tests
单元测试(Android unit tests)是运行在手机或模拟器上的测试,下面详细介绍如何进行模拟器或手机进行测试。
gradle配置
基于gradle与maven的对比,这里使用Gradle构建工具为例。
AndroidSDK默认提供基于AndroidTestCase的单元测试支持,首先在build.gradle中增加依赖:
编写测试与运行
测试工程
新建一个Android工程,这里以非常简单的被测类为例,目录结构如下:
DemoA.java
public class DemoA {
public int funtionA(int a, int b){
return a + b;
}
public int funtionB(int a, int b){
return a * b;
}
}
DemoTest.java
public class DemoTest extends AndroidTestCase{
@Override
protected void setUp() throws Exception {
super.setUp();
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
}
public void testDemoAWithFunctionA(){
DemoA demoA = new DemoA();
int i = demoA.funtionA(3, 4);
assertEquals(7, i);
}
public void testDemoAWithFunctionB(){
DemoA demoA = new DemoA();
int i = demoA.funtionB(3, 4);
assertEquals(12, i);
}
}
setUp() 在测试执行前需要做的一些代码操作可以在这个方法里边进行编写,例如初始化一些类或测试数据等。
tearDown() 在测试结束后,需要做一些操作可以在这个方法里边进行编写,例如一些测试数据的还原操作等。
test开头的方法即我们编写的测试case
运行测试
有了简单的测试代码,下面看如何运行测试。
Android Studio运行测试
1. 如单独运行某个测试类,打开DemoTest测试类直接点击运行即可
2. 如需要全部类执行,直接点击
命令行运行测试
也可以通过命令行运行测试:
./gradlew connectedAndroidTest --info
生成报告位置如下
覆盖率统计
单元测试覆盖率的统计可以使用JaCoCo插件。
build.gradle配置
在模块build.gradle中增加如下配置:
运行测试
./gradlew clean createDebugCoverageReport --info
覆盖率报告生成位置
<path_to_your_project>\app\build\reports\coverage\debug\index.html