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单元测试》第八周的更多相关文章

  1. 20175316 盛茂淞 Arrays和String单元测试

    Arrays和String单元测试 具体描述: 在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关方法的正常,错误和边界情况 String类 charAt split Arr ...

  2. 补交20145226蓝墨云班课 -- Arrays和String单元测试

    蓝墨云班课 -- Arrays和String单元测试 具体描述: 在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关方法的正常,错误和边界情况 String类 charAt ...

  3. 20175209 《Arrays和String单元测试》

    20175209 <Arrays和String单元测试> 题目 在IDEA中以TDD的方式对String类和Arrays类进行学习,测试相关方法的正常,错误和边界情况 String类 ch ...

  4. Arrays和String单元测试

    20175227张雪莹 2018-2019-2 <Java程序设计> Arrays和String单元测试 要求 在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关 ...

  5. 20175314薛勐 Arrays和String单元测试

    Arrays和String单元测试(课下作业,选做) 要求 在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关方法的正常,错误和边界情况 String类 CharAt Spl ...

  6. Arrays和String单元测试-20175218

    Arrays和String单元测试 一.题目 在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关方法的正常,错误和边界情况 String类 charAt split Arra ...

  7. 20175229张智敏 Arrays和String单元测试

    Arrays和String单元测试 1.具体要求: 在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关方法的正常,错误和边界情况 String类 charAt split A ...

  8. 20155228 2017-5-10 课堂测试:Arrays和String单元测试

    20155228 2017-5-10 课堂测试:Arrays和String单元测试 题目和要求 在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关方法的正常,错误和边界情况 ...

  9. 《Java 程序设计》课堂实践项目-Arrays和String单元测试

    <Java 程序设计>课堂实践项目-Arrays和String单元测试 课后学习总结 目录 改变 Arrays和String单元测试实验要求 课堂实践成果 课后思考 改变 修改了博客整体布 ...

随机推荐

  1. js检测数据类型四种办法

    面试题中经常会考js数据类型检测,今天我来分享一下js中常用的四种方法判断数据类型,欢迎指点更正. 废话不多说,直入正题. 1.typeof console.log(typeof "&quo ...

  2. Excel-VBA入门(1): 基础 / 变量 /for / if/ 调试

    (一) 启动VBA 打开excel ,选项-自定义功能区-开发工具, 在界面的开发工具下选择 宏安全:  勾选 启用所有 excel保存xlsm后缀的格式才可以用宏! 若启动VBA编辑器(以下简称VB ...

  3. table切换jquery插件 jQuery插件写法模板 流程

    通过$.extend()来扩展jQuery 通过$.fn 向jQuery添加新的方法 通过$.widget()应用jQuery UI的部件工厂方式创建 通过$.extend()来扩展jQuery $. ...

  4. pandas合并merge-【老鱼学pandas】

    本节讲述对于两个数据集按照相同列的值进行合并. 首先定义原始数据: import pandas as pd import numpy as np data0 = pd.DataFrame({'key' ...

  5. 全文搜索引擎Elasticsearch入门实践

    全文搜索引擎Elasticsearch入门实践 感谢阮一峰的网络日志全文搜索引擎 Elasticsearch 入门教程 安装 首先需要依赖Java环境.Elasticsearch官网https://w ...

  6. 初学Python的一些细节

    一.python的数据类型 1.python的基本数据类型包括数值数据类型和字符串数据类型:基本数据类型的特点是不允许改变,如果改变基本数据类型的值,会导致内存的重新分配. int 整形 二进制    ...

  7. Selenium2+python自动化45-18种定位方法(find_elements)

    前言 江湖传言,武林中流传八种定位,其中xpath是宝刀屠龙,css是倚天剑. 除了这八种,其实还有十种定位方法,眼看就快失传了,今天小编让失传已久的定位方法重出江湖! 一.十八种定位方法 前八种是大 ...

  8. elasticsearch搜索框架的安装相关

    安装JAVA SE 百度一下JAVA SE,按照自己的平台,位数选择就是了, 这里遇到过一个坑,双击exe安装包一直无法打开jdk的安装,在任务管理器里面就一闪而过, 后来我卸载了所有JAVA的相关安 ...

  9. C++ log4cplus 类库的封装

    对 log4cplus 库的封装,修改自网路 LogUtils.h /* * LogUtils.h * * Created on: 2018年8月9日 * Author: oftenlin */ #i ...

  10. jQuery 心跳请求

    原文链接:http://caibaojian.com/setinterval.html 前言:1.使用setInterval()的定时器会把事件运行的时间也包含在内,如果要精确算定时两个任务之间的时间 ...