首页 > 其他 > 详细

20175209 《Arrays和String单元测试》

时间:2019-04-21 17:52:13      阅读:321      评论:0      收藏:0      [点我收藏+]

20175209 《Arrays和String单元测试》

题目

在IDEA中以TDD的方式对String类和Arrays类进行学习,测试相关方法的正常,错误和边界情况

  • String类

    • charAt
    • split
  • Array类

    • sort
    • binarySearch

单元测试

一、String类

代码
import junit.framework.TestCase;
import org.junit.Test;

public class TestString extends TestCase{??? 
    String str1 = new String("Hello java");??? 
    String str2 = new String("你好,爪哇");??? 
    String s = new String("http://jwc.besti.edu.cn/ wo zhen hao kan");??? 
    @Test??? 
    public void testcharAt() throws Exception {??????? 
        assertEquals('l',str1.charAt(3));??? //正常情况??????? 
        assertEquals(' ',str1.charAt(5));??? //正常情况??????? 
        assertEquals('好',str2.charAt(1));?? //正常情况??????? 
        assertEquals(':',s.charAt(4));?????? //正常情况??????? 
        assertEquals('a',str1.charAt(9));??? //边界情况??????? 
        assertEquals('你',str2.charAt(0));?? //边界情况??????? 
        //assertEquals(' ',str1.charAt(-1));?????????? //异常情况??????? 
        //assertEquals('哇',str2.charAt(5));?????????? //异常情况??? 
    }??? 
    @Test??? 
    public void testsplit() throws Exception {???????
        assertEquals("http://jwc",s.split("[.]")[0]);??? //正常情况??????? 
        assertEquals("http://jwc.besti.edu.cn/",s.split(" ")[0]);??? //正常情况??????? 
        assertEquals("jwc.besti.edu.cn",s.split("/")[2]);??? //正常情况??????? 
        assertEquals("",s.split("\\p{Lower}")[0]);????? //边界情况??????? 
        assertEquals("kan",s.split("\\s")[4]);????????? //边界情况??????? 
        //assertEquals("jwc.besti.edu.cn",s.split("/")[1]);????????????? //异常情况???????
        //assertEquals(" ",s.split(" ")[-1]);??????????????????????????? //异常情况??? 
    }
}
charAt方法异常情况截图

技术分享图片
技术分享图片

split方法异常情况截图

技术分享图片
技术分享图片

测试通过截图

技术分享图片

二、Arrays类

代码
import junit.framework.TestCase;
import org.junit.Test;
import java.util.Arrays;

public class TestArrays extends TestCase{??? 
    int a[] = {2,5,6,4,9,3};??? 
    char b[] = {'d','y','a','t','z','h'};??? 
    String s[] = {"1","8","4","0","7","3"};??? 
    @Test??? 
    public void testsort() throws Exception {??????? 
        Arrays.sort(a);??????? 
        assertEquals("[2, 3, 4, 5, 6, 9]",Arrays.toString(a));??????? 
        Arrays.sort(b,1,4);??????? 
        assertEquals("[d, a, t, y, z, h]",Arrays.toString(b));??????? 
        assertEquals('t',b[2]);???????
        //assertEquals('a',b[0]);?????????? //异常情况??????? 
        Arrays.sort(s);??????? 
        assertEquals("[0, 1, 3, 4, 7, 8]",Arrays.toString(s));??? 
    }??? 
    @Test??? 
    public void testbinarySearch() throws Exception {??????? 
        Arrays.sort(a);??????? 
        assertEquals(3,Arrays.binarySearch(a,5));??????? 
        //assertEquals(-1,Arrays.binarySearch(a,10));???? //异常情况??????? 
        //assertEquals(-2,Arrays.binarySearch(a,0));???? //异常情况??? 
    }
}
sort方法异常情况截图

技术分享图片

binarySearch方法异常情况截图

技术分享图片

测试通过截图

技术分享图片

测试过程中遇到的问题及解决方法

  • 问题1:在测试split方法时,发现正常情况下的运行报错,Actual返回值为引用
    技术分享图片

  • 解决方法:查找书上第八节关于split方法的讲解,发现分解后的内容时存放在String数组中,因此在使用时需要通过数组下标调用,在使用时加上下标即可
  • 问题2:split方法在测试使用“/”符号作为分隔符时assertEquals("jwc.besti.edu.cn",s.split("/")[1]); 出现错误
    技术分享图片

  • 查看字符串s中的内容时发现连续出现了两个“/”符号,因此下标为1中的内容应为空,要比较的字符串的内容应该存放在下标为2的内存中
  • 问题3:在测试binarySearch方法时,开始时没有先将数组中的内容进行排序
  • 解决方法:数组中没有出现重复的元素,所以运行时没有问题。在查看了API文档后,在代码中添加了对数组的排序并重新进行测试
  • 问题4:测试sort方法时,Actual返回值为引用,并不是排序的结果
    技术分享图片

  • 解决办法:将数组转化为字符串形式输出即可输出数组全部内容
  • 问题5:在测试split方法时想用“.”做分隔符,但是写成“\56”的形式编译时出现问题,必须写成“[.]”的形式
    技术分享图片

  • 解决方法:暂时还没有解决……

代码托管

https://gitee.com/wangzihong/20175209/tree/master/%E8%AF%BE%E4%B8%8A%E7%BB%83%E4%B9%A0%E5%8F%8A%E8%AF%BE%E4%B8%8B%E4%BD%9C%E4%B8%9A/test[]

20175209 《Arrays和String单元测试》

原文:https://www.cnblogs.com/wangzihong0213/p/10745733.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!