《Java 程序设计》课堂实践项目-Arrays和String单元测试
《Java 程序设计》课堂实践项目-Arrays和String单元测试 课后学习总结
目录
- 改变
- Arrays和String单元测试实验要求
- 课堂实践成果
- 课后思考
改变
修改了博客整体布局,改变了之前贴个截图粘个代码就糊弄完的观念,这次布局和内容都有修改。
补充了部分没有讲过的测试类的样例,图片等都是再次运行之后截得细致的图片,电脑上也有原图。
Arrays和String单元测试实践要求
问:在IDEA中以TDD的方式对String类和Arrays类进行学习
- 测试相关方法的正常,错误和边界情况
- String类
- charAt
- split
- Arrays类
- sort
- binarySearch
课堂实践成果
代码如下:
import static org.junit.Assert.*;
/** * Created by Lenovo on 2017-06-11. */ /** * Created by 20145207 on 2017/5/4. */
import junit.framework.TestCase; import org.junit.Test;
import java.lang.*; import java.util.Arrays;
public class ComplexTest extends TestCase {
Complex c1 = new Complex(0, 3);
Complex c2 = new Complex(-1, -1);
Complex c3 = new Complex(2, 1);
String str = "dangranshixuanzeyuanliangtala";
String str2 = "dang:ran:shi:xuan:ze:yuan:liang:ta:la";//String[] str2sort = str2.split(":");
String[] str3 = new String[]{"dang", "ran", "shi", "xuan", "ze", "yuan", "liang", "ta", "la"};
@Test public void testString_charAt() throws Exception {
assertEquals('d', Complex.getString_charAt(str,0));
assertEquals('g', Complex.getString_charAt(str,3));
assertEquals('n', Complex.getString_charAt(str,6));
}
@Test public void testString_split() throws Exception {
assertEquals("dang", Complex.getString_split(str2)[0]);
assertEquals("yuan", Complex.getString_split(str2)[5]);
assertEquals("liang", Complex.getString_split(str2)[6]);
}
@Test public void testgetArrays_sort() throws Exception {
//ArraysTest(str3);
assertEquals("dang", Complex.getArrays_sort(str3)[0]);
assertEquals("ta", Complex.getArrays_sort(str3)[5]);
assertEquals("xuan", Complex.getArrays_sort(str3)[6]);
}
@Test public void testgetArrays_binarySearch() throws Exception {
//ArraysTest2(str4);
assertEquals(1, Arrays.binarySearch(Complex.getArrays_binarySearch(str4), 5.4));
assertEquals(0, Arrays.binarySearch(Complex.getArrays_binarySearch(str4), 4.6));
assertEquals(4, Arrays.binarySearch(Complex.getArrays_binarySearch(str4), 49.2));
}
实验截图如下:

需要注意以下两点我做实验时遇到的问题:
- 测试sort时输入的是字符串数组还是字符数组这里出现了问题,之后查API发现其实有很多类型。
- 测试binarySearch是输入的是double类型的,因为上来就用了字符串数组,导致出错
课后思考
关于测试
1.正常情况我是通过随机选取三个测试用例进行测试的
2.错误情况是直接输入错误答案看是否通过测试
3.边界情况是测试数组第一个和最后一个,截图为正常情况的测试。
关于过程
1.charAT:
- 此方法返回位于字符串的指定索引处的字符。该字符串的索引从零开始。
- 该方法的返回指定索引处char值。
- 所以为了实现单元测试,我在complex.java文件中添加如下代码:
代码:
//测试一
public static char String_charAt(String str, int i) {
return str.charAt(i);
} //取测试一结果
public static char getString_charAt(String str, int i) {
return String_charAt(str, i);
}
在complex.test中添加如下代码对其进行测试:
@Test
public void testString_charAt() throws Exception {
assertEquals('d', Complex.getString_charAt(str,0));
assertEquals('g', Complex.getString_charAt(str,3));
assertEquals('n', Complex.getString_charAt(str,6));
}
测试数组为:
String str = "dangranshixuanzeyuanliangtala";
最后测试结果如下:

2.split
- 这个方法有两个变体,并分割这个字符串围绕给定的正则表达式匹配。
- 返回由分割这个字符串围绕给定的正则表达式匹配计算字符串数组。
- 为了实现单元测试,我在Complex.java文件中添加如下代码:
//测试二
public static String[] String_split(String str) {
String[] strsort = str.split(":");
return strsort;
} //取测试二结果
public static String[] getString_split(String str) {
return String_split(str);
}
在complex.java中添加如下代码对其进行测试:
@Test
public void testString_split() throws Exception {
assertEquals("dang", Complex.getString_split(str2)[0]);
assertEquals("yuan", Complex.getString_split(str2)[5]);
assertEquals("liang", Complex.getString_split(str2)[6]);
}
测试数组为:
String str2 = "dang:ran:shi:xuan:ze:yuan:liang:ta:la";
最后测试结果如下:

3.sort
- 我使用sort方法字符指定数组排序按数字升序顺序。
- 此方法不返回任何值
- 为了实现单元测试,我在complex.java文件中添加如下代码:
//测试三
public static String[] Arrays_sort(String[] str3) {
Arrays.sort(str3);
return str3;
} //取测试三结果
public static String[] getArrays_sort(String[] str3) {
return Arrays_sort(str3);
}
在complex.java中添加如下代码对其进行测试:
@Test
public void testgetArrays_sort() throws Exception {
//ArraysTest(str3);
assertEquals("dang", Complex.getArrays_sort(str3)[0]);
assertEquals("ta", Complex.getArrays_sort(str3)[5]);
assertEquals("xuan", Complex.getArrays_sort(str3)[6]);
}
测试数组为:
String[] str3 = new String[]{"dang", "ran", "shi", "xuan", "ze", "yuan", "liang", "ta", "la"};
最后测试结果如下:

4.benarysearch
- 方法搜索指定double数组,使用二进制搜索算法来指定值。该数组必须在进行此调用之前进行排序。如果不排序,则结果是不确定的。
- 此方法返回搜索键的索引,如果它包含在数组中,否则它返回(- (插入点)- 1)。插入点是在将键插入数组的那一点:第一个元素比键大,或如果阵列中的所有元素都小于指定的键的索引大于a.length。
- 为了实现单元测试,我在complex.java文件中添加如下代码:
//测试四
public static double[] Arrays_binarySearch(double[] str4) {
Arrays.sort(str4);
return str4;
} //取测试四结果
public static double[] getArrays_binarySearch(double[] str4) {
return Arrays_binarySearch(str4);
}
在complextest.java中添加如下代码对其进行测试:
@Test
public void testgetArrays_binarySearch() throws Exception {
//ArraysTest2(str4);
assertEquals(1, Arrays.binarySearch(Complex.getArrays_binarySearch(str4), 5.4));
assertEquals(0, Arrays.binarySearch(Complex.getArrays_binarySearch(str4), 4.6));
assertEquals(4, Arrays.binarySearch(Complex.getArrays_binarySearch(str4), 49.2));
}
测试数组为:
double str4[] = {5.4, 4.6, 49.2, 9.2, 35.4};
最后测试结果如下:

学习反思及总结
重新做了一遍实验加深了对TDD的理解,同时也提高了对测试代码应用方面的能力,温故而知新。关于代码在上面就有总结过就不重复了。·
《Java 程序设计》课堂实践项目-Arrays和String单元测试的更多相关文章
- 20155322 2016-2017-2 《Java面向对象程序设计》第十二周课堂练习之Arrays和String单元测试
20155322 2016-2017-2 <Java面向对象程序设计>第十二周课堂练习之Arrays和String单元测试 练习目地 在IDEA中以TDD的方式对String类和Array ...
- 20155228 2017-5-10 课堂测试:Arrays和String单元测试
20155228 2017-5-10 课堂测试:Arrays和String单元测试 题目和要求 在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关方法的正常,错误和边界情况 ...
- 【课堂实验】Arrays和String单元测试
实验内容 在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关方法的正常,错误和边界情况 String类 charAt split Arrays类 sort binarySea ...
- 《Java 程序设计》课堂实践项目汇总链接
1.<Java 程序设计>课堂实践项目-命令行参数 2.<Java 程序设计>课堂实践项目-mini dc 3.<Java 程序设计>课堂实践项目-Arrays和S ...
- 《Java 程序设计》课堂实践项目 课后学习总结
<Java 程序设计>课堂实践项目 课后学习总结 String类的使用(sort) 目录 Linux命令(sort) 课堂实践 课后思考 学习老师的代码之后的思考:int与Integer ...
- 20155320 2016-2017-2《Java程序设计》第十二周课堂实践项目
20155320 2016-2017-2<Java程序设计>第十二周课堂实践项目 1.修改教材P98 Score2.java, 让执行结果数组填充是自己的学号: 2.在IDEA中以TDD的 ...
- 20155321 2016-2017-2《Java程序设计》课堂实践项目
20155321 2016-2017-2<Java程序设计>课堂实践项目 关于String类 split方法 charAt方法 项目题目: 模拟实现Linux下Sort -t : -k 2 ...
- 20162318 2016-2017-2《Java程序设计》课堂实践项目
20162318 2016-2017-2<Java程序设计>课堂实践项目 String类的使用 在String类中有一种split的方法.它可以把字符串分割为好几个小的字符串. 实践内容: ...
- 《Java 程序设计》课堂实践项目-类定义
<Java 程序设计>课堂实践项目类定义 课后学习总结 目录 改变 类定义实验要求 课堂实践成果 课后思考 改变 修改了博客整体布局,过去就贴个代码贴个图很草率,这次布局和内容都有修改. ...
随机推荐
- npm、webpack、Gulp 中文教程
按顺序阅读 1.npm 模块管理器 2.package.json 文件 3.npm 模块安装机制简介 4.npm scripts 使用指南 5.CommonJS 规范 随着 es6 模块化特性的出现, ...
- SQLSERVER性能计数器的简单剖析
SQLSERVER性能计数器的简单剖析 今晚看了这篇文章:SQL Server 2012新performance counter:非常实用的Batch Resp Statistics 文章里介绍到SQ ...
- 关于Nodejs开发桌面应用。NW.js 和 Electron 优缺点分析对比
从开发角度来说,选择用 nw.js 还是 election ,区别其实不是很大.大部分工作还是在自己的 javascript 和 HTML 上.国内比较有名的,比如微信web开发工具.钉钉都是基于 n ...
- ASP.Net WebAPI的返回值
Asp.Net WebAPI服务函数的返回值主要可以分为void.普通对象.HttpResponseMessag.IHttpActionResult e四种,本文这里简单的介绍一下它们的区别. 一.返 ...
- 使用CAReplicatorLayer [2]
使用CAReplicatorLayer [2] 工具类 // // Math.h // MathEquation // // Created by YouXianMing on 15/11/20. / ...
- 《C++ Primer Plus》读书笔记之六—函数探幽
第八章 函数探幽 1.常规函数与内联函数的主要区别不在于编写方式,而在于C++编译器如何将它们组合到程序中. 2.常规函数调用使程序跳到另外一个地址(函数地址),并在函数结束时返回,更详细的的实现过程 ...
- javascript Spline代码
代码是通过网上一个winform代码中提取修改而来的.后转为javascript 版本. /* points = new Array(); points.push({x:1,y:2}); */ fun ...
- 【ORACLE】使用中注意事项(二)
问题1:ORACLE在插入数据的时候,有时候中文变成????? 原因:由于当前计算机的字符集和服务器上的字符集不一致,导致中文乱码. 解决方案: 在当前使用的计算机中设置环境变量 在我的电脑上右键属性 ...
- python队列
先入先出队列: import queue q = queue.Queue(10) # 10为队列长度 for i in range(5): q.put(i, block=False) # block= ...
- VMWare虚拟机下为Windows Server 2012配置静态IP(NAT方式)
利用VMWare Workstation安装了Windows Server 2012 R2, 对于服务器来说,使用动态分配的IP会很不方便,最好设置为静态IP,此例中虚拟机和主机的网络联接方式为NAT ...