20175316 盛茂淞 Arrays和String单元测试

Posted sms369

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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类,不能有类。String类对象创建后不能修改,由0或多个字符组成,包含在一对双引号之间。

(1)charAt(int index)方法

该方法返回位于字符串的指定索引处的字符,字符串的索引从零开始,其中index是指字符的索引,即下标。例如字符串“Pretty boys and girls.”中,若是调用方法charAt(3),则返回的是‘t’字符。

测试代码如下所示:

String s = "Pretty boys and girls.";
    
@Test
public void testCharAt() {
    assertEquals('t',s.charAt(3)); //1
    assertEquals(' ',s.charAt(6)); //2
    assertEquals('g',s.charAt(16)); //3
    assertEquals('.',s.charAt(21)); //4
    //assertEquals('e',s.charAt(3)); //5
    //assertEquals(' ',s.charAt(22)); //6
}

将5和6所在的行注释(或删除)后,其中第4行是边界,运行结果为:
技术图片
若是将5所在行添加到项目中,会发生错误,因为测试值和给定的值不一致,具体的运行结果为:
技术图片
若是将6所在行添加到项目中,会发生错误,因为数组越界,超过给定字符串的长度,具体的运行结果为:
技术图片

(2)split()方法

该方法是用于分隔字符串,得到一个字符数组。例如字符串“Pretty boys and girls.”按照空格分隔,即调用split(" ")方法,可得到对应的字符串数组"Pretty","boys","and"和"girls."。

测试代码如下所示:

String s = "Pretty boys and girls.";
@Test
public void testSplit() {
    assertEquals("Pretty",s.split(" ")[0]); //1
    assertEquals("boys",s.split(" ")[1]); //2
    assertEquals("and",s.split(" ")[2]); //3
    assertEquals("girls.",s.split(" ")[3]); //4
        //assertEquals(".",s.split(" ")[3]); //5
}

2.Arrays类

Arrays类是一个实现对数组操作的工具类,包括了各种各样的静态方法,可以实现数组的排序和查找、数组的比较和对数组增加元素,数组的复制和将数组转换成字符串等功能。

(1)sort()方法

该方法用于数组排序,默认是升序排列,但是可以通过修改compareTo中的返回值来变为降序排列。

测试代码如下所示:

int[] i = {2,5,9,1};

@Test
public void testSort() {
    Arrays.sort(i);
    assertEquals(1,i[0]); //1
    assertEquals(2,i[1]); //2
    assertEquals(5,i[2]); //3
    assertEquals(9,i[3]); //4
    //assertEquals(5,i[3]); //5
}

将5所在的行注释(或删除)后,运行结果为:
技术图片
若是将5所在行添加到项目中,会发生错误,因为测试值和给定的值不一致,具体的运行结果为:
技术图片

以上是关于20175316 盛茂淞 Arrays和String单元测试的主要内容,如果未能解决你的问题,请参考以下文章

20175316盛茂淞 迭代和JDB

20175316盛茂淞-Java第2周学习总结

20175316盛茂淞 2018-2019-2 《Java程序设计》第8周学习总结

20175316盛茂淞 2018-2019-2 《Java程序设计》第5周学习总结

2019-2020-2 20175316盛茂淞《网络对抗技术》Exp3 免杀原理与实践

20175316盛茂淞 2018-2019-2 《Java程序设计》第11周学习总结