Android单元测试与最常用的Junit4
一、Android单元测试
单元测试是针对类中的某一个方法进行验证是否正确的过程,单元就是指独立的粒子,在Android和Java中大都是指方法。
二、使用单元测试的原因
使用单元测试可以提高开发效率,当项目随着迭代越来越大时,每一次编译、运行、打包、调试需要耗费的时间会随之上升,因此,使用单元测试可以不需这一步骤就可以对单个方法进行功能或逻辑测试。
三、Android测试的分类
Android测试主要分为三个方面:
单元测试(Junit4、Mockito、PowerMockito、Robolectric)
UI测试(Espresso、UI Automator)
压力测试(Monkey)
四、单元测试基础Junit4
Junit4事实上是Java标准测试库,并且它是Junit框架有史以来的最大改进,其主要目标便是利用Java5的Annotation特性简化测试用例的编写。
- Android Studio已经自动集成了Junit4测试框架
- Junit4框架使用时设计的注解
@Test:指明这是一个测试方法(@Test注解可以接受2个参数,一个是预期错误expected,一个是超时时间timeout)。
@Before:在所有测试方法之前执行。
@After:在所有测试方法之后执行。
@BeforeClass:在该类的所有测试方法和@Before方法之前执行(修饰的方法必须是静态的)。
@AfterClass:在该类所有测试方法和@After方法之后执行(修饰方法必须是静态的)。
@Ignore:忽略该单元测试。
- 主要的测试方法——断言
PS:上述每个方法,都有一个重载的方法,可以加一个String类型的参数,表示如果验证失败的话,将用这个字符串作为失败的报告结果。 - 自定义Junit Rule
实现TestRule接口并重写apply方法:
然后在想要的测试类中使用@Rule注解声明使用AndroidTestRule即可(注意:被@Rule注解的变量必须是final的):
- 使用Junit4进行单元测试
进行单元测试步骤:
编写测试类
鼠标右键点击测试类,选择Go To -> Test在Test/java/项目测试文件夹/下自动生成测试模板
使用断言进行单元测试
Run编写好的测试类 - 使用Android Studio自带的Gradle脚本自动化单元测试
点击Android Studio中的Gradle project下的app/Tasks/verification/test即可同时测试module下所有的测试类,并在module下的build/reports/tests/下生成对应的index.html测试报告。
- 对Junit4的总结
优点:速度快,支持代码覆盖率等代码质量的检测工具
缺点:无法单独对Android UI,一些类进行操作,与原生Java有一些差异
五、其他单元测试工具以及其他测试工具
详情请参考:一文全面了解Android单元测试
参考资料:一文全面了解Android单元测试