Android 单元测试介绍

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_35584098/article/details/79570767
单元测试
基本单元测试框架
Java单元测试框架:Junit、Mockito、Powermockito等
Android单元测试框架:Robolectric、AndroidJUnitestRunner、Espresso等
其中Junit & Mockito,这两个框架在java领域非常普及,使用简单,单元测试的最好也是先学习这两个框架
本文档主要介绍Junit & Mockito,以及在本项目中使用的案例


Junit 
AssertEquals

在TransPwdPresenter类中有个checkEazyPwd方法,该方法主要判断交易密码是否过于简单对于有返回值的方法,我们可以使用AssertEquals 来断言预期结果和实际结果是否相同,原代码如下:


测试代码如下:





如果将代码Assert.assertEquals(transPwdPresenter.checkEazyPwd(Transpwd), false);改成
Assert.assertEquals(transPwdPresenter.checkEazyPwd(Transpwd), true);那么预期值和实际值就会不相同, 测试将不通过。












Verify
验证方法是否被调用(以及被调用了多少次)




注意verify只是验证 transPwdFragment 的showText方法是否被调用,但是不能验证,showText()展示的内容, 所以需要加上eq(输入的内容),来验证showText的内容是否是正确的, 如果将里面的内容给改,测试也不会通过,如下图




有了以上的基础认识, 我们开始学习完整的单元测试
什么是单元测试?
   单元测试时为了测试某一个类中的某一个方法能否正常工作,而写的测试代码
@Before Setup 一般是为了设置一些前提条件,即在test方法调用前先调用的方法,我们可以把一些公共要调用的方法,或者实例化对象等操作放在 setup中



Test的命名规则:方法名_测试条件_执行结果










Arrange:
      准备好测试条件
Action
      要测试的方法
Assert
      测试的结果,即断言




单元测试Mockito-callback


申明依赖:testCompile”junit:junit:$rootProject.ext.junitVersion”
          testCompile”org.mockito:mockitoall:$rootProject.ext.mockitoVersion”


验证行为:Mockito.Verfiy(): 验证Mock 对象的方法是否被调用
         Mockito.times(): 调用 Mock对象的方法次数
        Mockito.atMost(count), Mockito.atLeast(count),Mockito.never():最多次数,最少次数
永远调用。


Mockito.anyInt(), Mockito.anyLong(),Mockito.anyDouble()等等:参数设置-任意的int类型, 任意的long类型等等。
   
怎样指定一个方法执行特定的动作(可用在回调方法)
1. doNothing() 2.doAnswer() 3.doThrow()


这些功能一般使用在目标方法返回void的时候, 并且其中包含回掉方法
例子:
在SetPhoneNumPresenter类的remote方法中




在这里我们想进一步 验证remoteRepo.remotepost 中的RepoCallBack里面的代码,验证mView的方法得到调用,以及其它逻辑的调用等等。
在测试环境下不能依赖传输网络得到真实的逻辑,而是让remoteRepo直接调用传入的callback的onsuccess,onFailed, onError方法。这种指定mock执行特定动作的写法如下


Mockito.doAnswer(desiredAnswer).when(mockObject).targetMethod(args);


传给doAnswer()的是一个Answer对象,我们想要执行什么样的操作,就在这里面实现。








参考地址:https://www.jianshu.com/p/6334d1e2babf


单元测试系列文章
www.chriszou.com/2016/04/13/android-unit-testing-start-from-what.html
展开阅读全文

没有更多推荐了,返回首页