学号20175313 《Arrays和String单元测试》第八周
Arrays和String单元测试
一、String类相关方法的单元测试
测试结果截图:
1. charAt方法测试
- 正常情况
- 边界情况
- 异常情况
测试代码:
import junit.framework.TestCase;
import org.junit.Test;
public class testString extends TestCase {
String s = new String("java");
String str = new String("www.baidu.com welcome to China");
@Test
public void testcharAt() throws Exception{
assertEquals('j', new String("hello java").charAt(6));//正常情况
assertEquals('好', new String("你好 java").charAt(1));//charAt取得是一个字符不是一个字节
assertEquals('.',new String("i can.").charAt(5));//正常情况
assertEquals('你', new String("你好 java").charAt(0));//边界情况
assertEquals('a',s.charAt(3));//边界情况
//assertEquals(' ',s.charAt(-1));//异常情况
//assertEquals(' ',s.charAt(5));//异常情况
}
}
- 上述测试代码中两个异常情况测试结果截图:
- 查找位置溢出
- 查找位置小于0
2. split方法测试
- 正常情况
- 边界情况
- 异常情况
测试代码:
TestCase {
String s = new String("java");
String str = new String("www.baidu.com welcome to China");
@Test
public void testsplit() throws Exception{
assertEquals("www",str.split("[.]")[0]);//正常情况
assertEquals("www.baidu.com",str.split(" ")[0]);//正常情况
assertEquals("",str.split("[a-z]+")[0]);//边界情况
assertEquals(".",new String(".www.com").split("\\w")[0]);//边界情况
//assertEquals(" ",str.split(" ")[-1]);//异常情况
//assertEquals(" ",str.split(" ")[4]);//异常情况
}
}
- 上述测试代码中两个异常情况测试结果截图
- 查找位置小于0
- 查找位置溢出
二、Arrays类相关方法的单元测试
测试结果截图:
1. sort方法测试
- 正常情况
- 边界情况
- 异常情况
测试代码:
public class testArrays extends TestCase {
String []data1 = {"1","2","5","3","4"};
char [] data2 = {'a','z','y','c','b'};
int data3[] = {3,6,8,2,9,0};
@Test
public void testSort(){
Arrays.sort(data1);
assertEquals("[1, 2, 3, 4, 5]",Arrays.toString(data1));
Arrays.sort(data2);
assertEquals("[a, b, c, y, z]",Arrays.toString(data2));
Arrays.sort(data3,0,5);
//使用public static void sort(int[] a,int fromIndex,int toIndex)方法排序
assertEquals("[2, 3, 6, 8, 9, 0]",Arrays.toString(data3));
assertEquals(0,data3[5]);
//assertEquals(1,data3[8]);//异常情况
}
- 上述测试代码中异常情况测试结果截图
2. binarySearch方法测试
- 正常情况
- 边界情况
- 异常情况
测试代码:
public void testBinarySearch(){
Arrays.sort(data1);
assertEquals(0 ,Arrays.binarySearch(data1,"1"));//正常情况
assertEquals(-6,Arrays.binarySearch(data1,"6"));//异常情况,要搜索的数比数组元素最大还大
assertEquals(-1,Arrays.binarySearch(data1,"-1"));//异常情况,要搜索元素比数组元素最小还小
Arrays.sort(data3);
assertEquals(-4,Arrays.binarySearch(data3,4));
}
三、测试过程中遇到的问题及其解决方法
- 问题1:对split方法的一些细节性问题掌握不到位,导致测试不通过。
- 解决方法:认真查阅资料,对split方法的一些细节进行深入研究,得知:split()方法认为分隔符标记的左侧应该是单词,依次如果和当前String对象的字符序列的前缀和regex匹配,那么split(String regex)方法分解出的第一个单词是不含任何字符的字符序列,即“”。
- 经过修改后,测试代码截图如下:
- 问题2:字符串数组不能直接用toString输出,采用toString输出的是该数组的引用。
- 解决方法:采用Arrays类的toString方法将字符串数组转化为字符串输出。
- 经过修改后,测试代码截图如下:
- 问题3:进行二分搜索时,未现将该数列进行排序,导致结果出错。
- 解决方法:现将该数列进行排序后再进行二分搜索。
- 经过修改后,测试代码截图如下:
注意⚠️使用binarySearch搜索时:
- 当搜索元素是数组元素,则返回该元素的索引值
- 如果不是数组元素,则返回 - (索引值 + 1)
- binarySearch源代码截图如下:
四、码云链接
五、参考资料
学号20175313 《Arrays和String单元测试》第八周的更多相关文章
- 20175316 盛茂淞 Arrays和String单元测试
Arrays和String单元测试 具体描述: 在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关方法的正常,错误和边界情况 String类 charAt split Arr ...
- 补交20145226蓝墨云班课 -- Arrays和String单元测试
蓝墨云班课 -- Arrays和String单元测试 具体描述: 在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关方法的正常,错误和边界情况 String类 charAt ...
- 20175209 《Arrays和String单元测试》
20175209 <Arrays和String单元测试> 题目 在IDEA中以TDD的方式对String类和Arrays类进行学习,测试相关方法的正常,错误和边界情况 String类 ch ...
- Arrays和String单元测试
20175227张雪莹 2018-2019-2 <Java程序设计> Arrays和String单元测试 要求 在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关 ...
- 20175314薛勐 Arrays和String单元测试
Arrays和String单元测试(课下作业,选做) 要求 在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关方法的正常,错误和边界情况 String类 CharAt Spl ...
- Arrays和String单元测试-20175218
Arrays和String单元测试 一.题目 在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关方法的正常,错误和边界情况 String类 charAt split Arra ...
- 20175229张智敏 Arrays和String单元测试
Arrays和String单元测试 1.具体要求: 在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关方法的正常,错误和边界情况 String类 charAt split A ...
- 20155228 2017-5-10 课堂测试:Arrays和String单元测试
20155228 2017-5-10 课堂测试:Arrays和String单元测试 题目和要求 在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关方法的正常,错误和边界情况 ...
- 《Java 程序设计》课堂实践项目-Arrays和String单元测试
<Java 程序设计>课堂实践项目-Arrays和String单元测试 课后学习总结 目录 改变 Arrays和String单元测试实验要求 课堂实践成果 课后思考 改变 修改了博客整体布 ...
随机推荐
- background-image属性
background-image 属性 实例,设置body元素的背景图像: body { background-image: url('paper.gif'); background-color: # ...
- 论文阅读 | A Curriculum Domain Adaptation Approach to the Semantic Segmentation of Urban Scenes
paper链接:https://arxiv.org/pdf/1812.09953.pdf code链接:https://github.com/YangZhang4065/AdaptationSeg 摘 ...
- 别再用"while (!feof(file))"来逐行读取txt文件了!
起因 执行一个C/C++程序出现segment fault.它逐行读取文本文件,每一行是一个图片名字,然后读图.处理图像,etc. 发现最后一次读取的文件名不存在(空的). 正确的逐行读取txt文件 ...
- [原创]Zynq AXI-CDMA测试结果
经过研究与demo,在zynq上使用axi-cmda效率还是很高,测试报告如下所示 对于读取32KB,GP0和HP0的测试结果如下:
- JavaScript 动态选择方法和属性
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- spark Transformations算子
在java中,RDD分为javaRDDs和javaPairRDDs.下面分两大类来进行. 都必须要进行的一步. SparkConf conf = new SparkConf().setMaster(& ...
- C++ vector的用法(整理)
vector 是向量类型,它可以容纳许多类型的数据,如若干个整数,所以称其为容器.vector 是C++ STL的一个重要成员,使用它时需要包含头文件: #include<vector>; ...
- 【Redis】-- 安装及配置
我们redis的安装较为复杂,属于Linux上的源码编译安装,即不能直接通过yum安装. 1.安装Redis 具体步骤: 1.进入redis官网,复制下载链接,通过wget下载源码 官网:https: ...
- 15,EasyNetQ-高级API
EasyNetQ的使命是为基于RabbitMQ的消息传递提供最简单的API. 核心IBus接口有意避免公开AMQP概念,如交换,绑定和队列,而是实现基于消息类型的默认交换绑定队列拓扑. 对于某些场景, ...
- PBRT笔记(3)——KD树
茎节点与叶子节点 茎节点与叶子节点皆适用KdAccelNode来表示 注意:这里使用了匿名union union有个特性:内部类型共用一段内存,且大小为内部最大类型的大小. struct KdAcce ...













