android studio使用junit单元测试及获取代码覆盖率

1.背景

android studio下常用的单元测试类型有Android JunitAndroid Instrumented Tests等,这里说下前者。
Android Junit仅需jvm,运行在本地,无需android设备或者模拟器;在较新的AS版本中创建项目,会自动生成两个测试目录:androidTest和test,一般在test中放junit的测试代码,androidTest下面放Instrumented的测试代码
android studio使用junit单元测试及获取代码覆盖率

2.编写junit单元测试

针对需要测试的功能代码,比如这里有一个实现加减乘除的class:
android studio使用junit单元测试及获取代码覆盖率
右键go to -> test,创建单元测试
android studio使用junit单元测试及获取代码覆盖率
选择junit4,setup和teardown根据自己需求选择,以及需要创建单元测试用例的方法
android studio使用junit单元测试及获取代码覆盖率
大概是下面这个样子,具体的写法这里不详述,就是调用功能代码中的方法,然后使用断言判断
android studio使用junit单元测试及获取代码覆盖率
然后直接执行测试代码即可

3.单元测试及代码覆盖率

上面已经写好了测试代码,右键RUN **test就ok了,或者在Run/Debug Configurations中配置也可以;执行后生成如下测试结果:
android studio使用junit单元测试及获取代码覆盖率
结果还可以导出为各种格式查看
android studio使用junit单元测试及获取代码覆盖率
android studio使用junit单元测试及获取代码覆盖率
下面主要说下如何获取代码覆盖率,以及配置查看指定module的覆盖率情况
android studio使用junit单元测试及获取代码覆盖率

执行完成在as的coverage视图会展示覆盖率结果:
android studio使用junit单元测试及获取代码覆盖率
点击左侧导出按钮可以导出结果,不再赘述。
android studio使用junit单元测试及获取代码覆盖率
导出结果包含了依赖的class,工程main中的其他class,当然点击对应的package可以查看到目标测试代码的覆盖率情况;这里介绍另外一种配置方法,可以针对目标代码展示覆盖率情况;
Run/Debug Configurations中,配置刚执行的Android Junit任务:
android studio使用junit单元测试及获取代码覆盖率
重新执行run test with coverage得到结果
android studio使用junit单元测试及获取代码覆盖率
这样就只获取指定模块的代码覆盖率结果了。