Java进阶知识 —— Android 单元测试入门

什么是单元测试?

单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。比如我们可以测试一个类,或者一个类中的一个方法。

为什么要进行单元测试?

为什么要进行单元测试?说白了就是单元测试有什么好处,其实测试的好处无非就是减少bug、提高代码质量、使代码易于维护等。

这样表达可能不太好理解,举个例子

比如我们APP启动,从初始化到启动页,再进入首页,需要很长的流程,如果主页需要请求数据,每次都要启动APP,经过一系列流程进入主页,才能测试主页请求数据模块,效率低下。
当然我们也能在初始化时请求数据,但是这样需要更改代码逻辑,同样需要启动APP,而如果用单元测试,我们可以直接测试请求数据模块,不需要任何逻辑修改。提高效率

开始进行单元测试

AS创建工程时,src下创建 androidTest 和 test 目录,

这里写图片描述

这两个目录有什么区别呢?

src/test src/androidTest
位于src/tests目录下的测试是运行在本地电脑Java虚拟机上的单元测试。编写测试,实现功能使测试通过,然后再添加更多的测试…这种工作方式使快速迭代成为可能,我们称之为测试驱动开发 跟src/test不同的是运行在设备上,并充分利用Android框架的测试

简单来说,src/test不需要你连接设备,而src/androidTest需要连接设备测试。

一、先说一下src/tests
  • 首先确认app下gradle中存在依赖:
dependencies {
    testCompile 'junit:junit:4.12'
}
  • 这里有个 快速排序的类,对一个数组进行快速排序
public class FastSort {

    public  void main(){
        int[] a = new int[]{5,10,34,2,45,38,23,70,1,32,20,17,4,80,14,100};
        quick_sort(a,0,a.length - 1);
        for (int i : a) {
            System.out.println(i);
        }

    }

     void quick_sort(int a[],int l,int r){
        if (l < r){
            int i = adjustArray(a,l,r);
            quick_sort(a,l,i-1);
            quick_sort(a,i+1,r);
        }

    }

    private  int adjustArray(int a[],int l,int r){
        int i = l,j = r,x = a[i];
        while (i < j){

            while (i < j && a[j] >= x){   //如果 a[j] > x ,不用管,j-1,倒着比较下一个
                j--;
            }
            if (i < j){  // a[j] < x 跳出while循环
                a[i] = a[j];    //将a[j]的值赋给a[i]被挖出的位置,默认是数组都一个
                i++;   //i++,为后面i开始自增,提前增加
            }


            while (i < j && a[i] < x){ //如果 a[i] <  x ,不用管,x+1,比较下一个
                i++;
            }

            if (i < j){  // a[i] > x 跳出while循环
                a[j] = a[i];   //将a[i]的值赋给上面a[j]被挖出的位置
                j--;   //j--,为后面j继续自减,提前减少
            }

        }
        a[i] = x;
        return i;
    }

}

既然工具类写好了,当然要测试一下排序方法对不对了,这时候直接用单元测试来检验一下。

  • AS为我们提供了创建测试类的快捷方法:

这里写图片描述

  • 右键 –> Go To –> Test
    这里写图片描述

  • 勾选上所有方法,点击 OK,一路点击OK,完成测试类创建

public class FastSortTest extends TestCase {
    public void setUp() throws Exception {
        super.setUp();
    }
    public void tearDown() throws Exception {
    }
    public void testMain() throws Exception {
    }
    public void testQuick_sort() throws Exception {
    }
}

setUp:在测试开始之前回调的方法( 比如说初始化我们的类)。
tearDown():测试结束的回调方法。

  • 来添加测试代码
public class FastSortTest extends TestCase {

    private FastSort sort;
    public void setUp() throws Exception {
        super.setUp();
        sort = new FastSort();
    }

    public void tearDown() throws Exception {
    }

    public void testMain() throws Exception {
        sort.main();
    }

    public void testQuick_sort() throws Exception {

    }

}

sort.main()方法,检测快速排序方法的正确性

  • 开始测试
    右键点击FastSortTest类 —> ‘Run FastSortTest’,也可以通过命令行运行测试,在工程目录内输入:
./gradlew test

这里写图片描述

测试结束,可以看到,sortMain()方法通过测试
这里写图片描述

成功完成了 src/test 单元测试,

这里简单介绍了 src/test 测试,关于其他用法,大家可以去深入研究一下

猜你喜欢

转载自blog.csdn.net/dazhaoDai/article/details/80265631