zoukankan      html  css  js  c++  java
  • 软件工程(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());
    }
    


    证明程序无错误。

  • 相关阅读:
    MySQL binlog中 format_desc event格式解析
    位bit和字节Byte
    MySQL利用mysqlbinlog模拟增量恢复
    mysqldump参数 --master-data详解
    开启MySQL二进制日志
    设置花里胡哨的Xshell字体与背景颜色(超全)
    Python操作MySQL数据库
    给定一个由括号([{)]}其中之一或多个组成的字符串判断是否符合左右括号成对标准,不同括号可任意嵌套
    给定一个字符串str,将str中连续两个字符为a的字符替换为b(一个或连续超过多个字符a则不替换)
    不使用局部变量和for循环或其它循环打印出如m=19,n=2結果为2 4 8 16 16 8 4 2形式的串
  • 原文地址:https://www.cnblogs.com/Mr-quin/p/8598253.html
Copyright © 2011-2022 走看看