为什么要编写测试用例?
测试是软件开发中一个重要的环节,而测试用例可以显著提高测试的效率和准确性,测试用例其实就是一段普通的程序代码,通常是带有期望性的运行结果的,测试者可以根据最终的运行结果来判断程序是否能正常工作。
也许你会觉得,将程序运行起来看看结果就知道是否正确了,为什么要编写测试用例呢?在我们平常开发小例子的过程中,这样的确很方便,但是如果我们在开发一个大型项目,这样就很划不来了,而且如果这个工程里面有很多的功能,但我们修改其中一个功能的时候,可能让其他功能出现问题,如果不编写测试用例,那么就需要将这个大型软件跑起来,然后观察结果,或者是我们开发中常常会开发工具类,为了验证工具类是否能正常工作,如果不编写测试用例,那么就需要将测试代码放在项目代码中,将整个项目运行起来,这样无疑是不对的。
Android Studio中在哪里编写测试用例?
当我们在Android Stdio中新建一个工程的时候,我们往往会发现多出一个test文件夹和一个androidTest文件夹。如下图所示,在Project视图下这两个文件夹。这两个文件夹里面都可以用来编写测试用例,两个的区别就是:test文件夹下编写的测试用例可以用来测试工具类,运行在本地的Java虚拟机上,而不用在Android设备上运行,androidTest文件夹下的测试用例则是运行在Android设备。
我们在Project视图下可以直接看到这两个文件夹,但是在Android视图下我们只能看到一个,如下图,不同的是,我们可以在文件夹后面看到两个灰色字体标注的区别。
关于如何切换这两个视图,在菜单栏View->Tool Windows ->Builde Variants里面切换
如下图,上面一个代表Android,下面一个Unit Tests代表测试工具类的。
Android Stdio如何编写测试用例
首先我们先创建一个需要被测试的类,这里创建的是TestClass,里面只有一个方法。
public class TestClass {
public static int getValues(){
return 0;
}
}
我们只需要在类名上右击,选择go To 然后选择test,如下图所示
这时会弹出一个选择框,用于选择需要测试的方法了,如下图
下图中看到有两个回调方法setUp 和 tearDown,分别是在运行测试用例之前和之后调用。
然后在AndroidTest文件夹下就自动创建了一个测试类,其中方法由test开头,也必须由test开头,如下图这样Android stdio才会知道哪些函数是测试用例函数。
然后我们在左边的TestClassTest文件上右键点击运行,然后选择模拟器(因为创建在AndroidTest文件下,需要模拟器),那么就开始执行testGetValuses方法,我们可以在里面对功能模块进行测试。
对于编写工具类的测试用例,由于我们不需要模拟器,所以放在test文件夹下,和上面的生成方法类似,首先切换视图到Unit Tests下,然后使用上面的方法生成对应的测试用例,在test文件夹下,有一个ExampleUnitTest文件,从名字就可以看出,这是一个例子,我们根据这个例子可以看出,
一 : 这个类不需要继承TestCast
二 :标识测试用例的应该是方法名上面的@Test,而不是test开头,当然,规范是同名方法前面加test
所以我们将Android Stdio生成的模板修改一下。如下图右键运行该测试实例不需要选择模拟器,因为是运行在本地Java虚拟机上的。
之所以需要自己手动修改模板的原因估计是Android Stdio的bug,我们可以让Android Stdio自己生成后修改,也可以直接在这两个文件夹下自己创建测试用例,和创建普通java类的方法一样,然后格式对照相应目录下的模板文件修改。
Android Studio如何运行测试用例
当我们编写了很多测试用例,当我们要都运行一遍,除了上面说的单独运行,还可能没法单独运行(新版的Android Studio),那么需要如下操作
然后运行,报告界面如下