软件工程(2018)第二次个人作业
自动单元测试技术练习
一、选择开发工具
1. 工具选择
本次作业我选择的开发工具是Google
的Android Studio
(简称AS)。其支持的工具语言有C++
,Java
,Kotlin
,在此我选择Java进行开发。
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());
}
证明程序无错误。