学号20175313 《Arrays和String单元测试》第八周

目录

  • Arrays和String单元测试

    • 一、String类相关方法的单元测试
    • 二、Arrays类相关方法的单元测试
    • 三、测试过程中遇到的问题及其解决方法
    • 四、码云链接
    • 五、参考资料

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源代码截图如下:

四、码云链接

五、参考资料

原文地址:https://www.cnblogs.com/xiannvyeye/p/10727136.html

时间: 2024-10-08 21:59:11

学号20175313 《Arrays和String单元测试》第八周的相关文章

20175316 盛茂淞 Arrays和String单元测试

Arrays和String单元测试 具体描述: 在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关方法的正常,错误和边界情况 String类 charAt split Arrays类 sort binarySearch 提交测试代码和运行结果截图,加上学号水印,提交码云代码链接. 内容: 1.String类 String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象.java把String类声明的final类,不能有类.St

《Java程序设计》第八周学习总结

学号 20175313 <Java程序设计>第八周学习总结 一.教材学习内容总结 第十五章主要内容 了解String类 常量对象:常量池中的数据在程序运行期间再也不允许改变. String对象:用户无法输出String对象的引用. 例如: String s = new String("i am a student"); System.out.pintln(s);//输出对象的实体 可以用s.toString()来返回对象引用的字符串 表示. 输出:i am a studen

第八周总结&amp;实验报告六

实验六 Java异常 实验目的 理解异常的基本概念: 掌握异常处理方法及熟悉常见异常的捕获方法. 实验要求 练习捕获异常.声明异常.抛出异常的方法.熟悉try和catch子句的使用. 掌握自定义异常类的方法. 实验内容 编写一个类,在其main()方法中创建一个一维数组,在try字句中访问数组元素,使其产生ArrayIndexOutOfBoundsException异常.在catch子句里捕获此异常对象,并且打印"数组越界"信息,加一个finally子句,打印一条信息以证明这里确实得到

学号20182325 《程序设计与设计结构》 第八周学习总结

学号20182325袁源 <数据结构与面向对象程序设计>第8周学习总结 教材学习内容总结 排序.算法.栈.队列 插入排序.交换排序,选择排序.基数排序.归并排序 用时间效率.空间效率.稳定性(数值相等次序不变)衡量算法. 树:由n个结点组成的有限集合 n=0为空树 非线性结构 DNS: 一对多:有且仅有一个前驱:有多个后继 每个结点都有且仅有一条通往根结点的路 度:子树数 叶:0度 可分层 遍历树 存储结构 1.双亲表示法 2.孩子表示法 3.双亲孩子表示法 2.可用链表与数组实现 教材学习中

20145301 《Java程序设计》第八周学习总结

20145301 <Java程序设计>第八周学习总结 教材学习内容总结 第十五章部分 - 通用API 通用API 日志: 日志对信息安全意义重大,审计.取证.入侵检测等都会用到日志信息 Logger java.util.logging包提供了日志功能相关类与接口,使用日志的起点是logger类,Logger类的构造函数标示为protected,不是java.util.logging同包的类不能直接以new创建,必许使用Logger的静态方法:名称空间层级相同的Logger,父Logger组态会

20145311 《Java程序设计》第八周学习总结

20145311 <Java程序设计>第七周学习总结 教材学习内容总结 第十四章 NIO与NIO2 高级的输入输出处理,可以使用NIO(New IO),NIO2是文件系统的API 第十五章 通用API 15.1日志 15.1.1日志API 使用日志的起点是Logger类,要取得Logger类,必须使用Logger的静态方法getLogger(),Logger.log()方法可以用来输出信息. 默认的Logger还会记录时间.类.方法等信息,Logger是记录信息的起点,还会经过一些过滤才会输出

## 20155336 2016-2017-2《JAVA程序设计》第八周学习总结

20155336 2016-2017-2<JAVA程序设计>第八周学习总结 教材学习内容总结 第14章 NIO与NIO2 NIO简介 NIO使用频道来衔接数据结点,在处理数据时,NIO可以让你设定缓冲区容量,在缓冲区中对感兴趣的数据区块进行标记,像是标记读取位 置.数据有效位置,对于这些区块标记,提供了Clear().rewind().flip().compact()等高级操作. NIO2简介 NIO2文件系统API提供一组标准接口与类,应用程序开发者只要基于这些标准接口与类进行文件系统操作,

20172325 2017-2018-2 《Java程序设计》第八周学习总结

20172325 2017-2018-2 <Java程序设计>第八周学习总结 教材学习内容总结 1.关于绑定 绑定:在执行程序时产生一个请求事件,需要执行一段代码来来完成方法调用,即一个方法调用与一个方法定义的绑定. 后绑定:后绑定就是延迟绑定的情况.(后绑定的效率低于编译阶段的绑定效率) 2.由继承实现多态性 一个引用变量可以指向由继承关系的任何类的任何对象: 实际将调用的方法版本取决于对象的类型而不是引用变量的类型: 3.利用接口实现多态性 接口引用变量可以指向实现该接口的任何类的任何对象

学号20172328《程序设计与数据结构》第九周学习总结

学号20172328<程序设计与数据结构>第九周学习总结 教材学习内容总结(异常和递归) 第11章:异常 1.[异常处理]: 一个异常:是一个定义非正式情况或错误的对象,由程序或者运行时环境抛出,可以根据需要捕获和处理. 错误:错误类似于异常,但是错误代表不可恢复的问题并且必须捕获处理. 2.[处理异常的三种方法]:①根本不处理异常②当异常发生时处理异常③在程序的某个位置集中处理异常. 3.[未捕获的异常]:如果程序中不处理异常,则程序将非正常的终止运行,并产生关于描述在何处发生什么异常的信息