软件工程(2018)第二次个人作业

自动单元测试技术练习

一、选择开发工具

1. 工具选择

本次作业我选择的开发工具是GoogleAndroid Studio(简称AS)。其支持的工具语言有C++JavaKotlin,在此我选择Java进行开发。
Android Studio

2. 界面介绍

由于我已安装过AS,所以不再介绍安装过程(只要全程保持联网,安装过程还是很愉悦的),只简单展示一下界面。

项目创建页
左侧为历史项目快捷入口,右侧常用的有Start a new Andrid Studio project(开始一个新项目)和Open an existing Android Studio project(打开一个已存在的项目)。

等待Gradle加载完,进入主界面

二、 练习自动单元测试技术

1. 加入依赖库

AS自带Junit4.12的测试,在此加入依赖库:

testImplementation 'junit:junit:4.12'

2. 编写测实例方法

加入依赖库后创建一个实例,作为测试方法,我选择了经典的二分查找,第一个参数是一个有序数组,第二个是要查找的数:

public class Binary_chop {
    //有序数组
    private int []array;
    //待查找数
    private int sel;
    
    //空的构造方法,用作默认测试样例
    public Binary_chop(){
        array=new int[10];
        for(int i = 0;i < 10;i++){
            array[i] = i;
        }
        sel = 5;
    }

    //含参构造方法
    public Binary_chop(int[] array, int sel) {
        this.array = array;
        this.sel = sel;
    }

    //二分查找方法
    public int binary_chop() {

        //低位指针,初始为0
        int low = 0;
        //高位指针,初始为数组末位
        int high = array.length;

        while (low <= high) {
            int mid = low + (high - low) / 2;
            if (sel == array[mid]) {
            //期望值为查找值在数组中的位置
                return ++mid;
            }
            if (sel > array[mid]) {
                low = mid + 1;
            } else {
                high = mid - 1;
            }
        }
        //未找到则返回-1
        return -1;
    }
}

3. 编写测试类

1. 写好测试类后右键选择Test:

2. 选择默认测试类或自己新建一个:

3. 新建测试类,勾选待测试方法:

4. 编译器自动构建测试类:

默认内容如下:

public class Binary_chopTest {
    @Test
    public void binary_chop() throws Exception {
    }
}

4. 运行测试类

1. 先测试一下无参构造方法下的默认数据:

数组:0,1,2,3,4,5,6,7,8,9 ;
待查找数:5;
期待值:6;

@Test
public void binary_chop() throws Exception {
    assertEquals(6,new Binary_chop().binary_chop());
}

点击开始测试:

得到如下结果:

说明没有错误。

2. 设置样例进行测试:

数组:33,37,56,90,98,126,255,256,333,569;
待查找数:56;
期待值:3;

@Test
public void binary_chop() throws Exception {
    assertEquals(3,new Binary_chop(new int []{33,37,56,90,98,126,255,256,333,569},56).binary_chop());
}

开始测试,得到如下结果:

证明依然没有问题。

3. 设置一个错误值

数组:33,37,56,90,98,126,255,256,333,569;
待查找数:57;
由于57不存在于数组中,故期待值应为-1
期待值:-1;

@Test
public void binary_chop() throws Exception {
    assertEquals(-1,new Binary_chop(new int []{33,37,56,90,98,126,255,256,333,569},56).binary_chop());
}


证明程序无错误。

posted @ 2018-03-18 23:22  秦川德利齐  阅读(267)  评论(0编辑  收藏  举报