本菜GitHub上开源了一个小的Android项目,感兴趣的看官大大们可以star下:
https://github.com/zhiaixinyang/MyFirstApp
今天记录一下AndroidStudio下的单元测试,并且记录一下其中的出现的小东西....
首先我使用的是androidstuio2.0,工程目录是这样的....
很多百度出来的答案都只有上边那个目录,应该是版本的问题吧。所以这里大概就出现了一个问题。既然高版本出现了一个新的test目录,那么很可能这是google推荐的单元测试方式。
其实根据这个目录下的类名也差不多能够确定这个推想...但是真相辣眼睛....
首先看一下这个目录下的唯一的类,里边有一个判断俩个值相不相等的测试方法。
当我右键方法名运行时,也的确测试未通过,4!=2+1...
这里有个好玩的地方,用了一个注解。那么借此机会记录一下相关注解的知识。(以下内容来自《Java编程思想》)
有个有意思的巧合,《Java编程思想》里的案例用的是@Test,而这里也是@Test。(然而这并没有什么卵用.....)
PS:关于注解可以瞅瞅我的另一篇博客http://blog.csdn.net/wjzj000/article/details/53227352
接下来进入这个单元测试的注解中,看一看这个Test注解声明:
接下来跳出注解回归单元测试上来。
点进去assertEquals()这个方法,我们可以得到这个类Assert。而这个类为public,其中方法皆为static,并且它来自这个org.junit包下。这里有个问题那就是,既然是static为什么没有用类名进行调用,而是直接使用了方法。答案在这里:
静态导入....
继续把这个方法追进去,会发现测试就是在未通过的时候抛出异常...
可以看出来这个错误就是为单元测试而做的。那么接下来让我们进行一些属于andorid的测试。
但是...我尝试了在这个类中获取context,activity,fragment啥的...通通不行,当然这也正常。一个基类啥也没继承,想获取android中的类信息的确不大现实...尼玛,你就能验证个俩个值相不相等有屁用....
事实证明android的单元测试在上边的那个目录里....
打开这个类,我看到了熟悉的东西...
接下来才是动真格的....
我们可以通过继承不同的类来获取不同的相关内容,比如这样:
继承的同时传递了MainActivity也就是我需要此时的Activity类。
接下来进行一个简单的判空,如下:
结果正常没有问题。
梳理一下过程,首先在setUp()中进行初始化,这个方法效果类似于Activity中的onCreate()。紧接着写一个以test开头的方法。方法内容就是自己需要测试的内容。
最后说一下前文中出现的问题。这俩个测试目录的区别,其实区别就在名字上,一个是用于android单元测试另一个用于java测试。