zoukankan      html  css  js  c++  java
  • 20155322 2016-2017-2 《Java面向对象程序设计》第十二周课堂练习之Arrays和String单元测试

    20155322 2016-2017-2 《Java面向对象程序设计》第十二周课堂练习之Arrays和String单元测试

    练习目地

    在IDEA中以TDD的方式对String类和Arrays类进行学习

    练习要求

    1. 测试相关方法的正常,错误和边界情况
    2. TDD的方式
    3. 在实验二ComplexTest的基础上进行修改

    练习内容

    • Strings类:
      • charAt
      • split
    • Arrays类:
      • sort
      • binarySearch

    练习过程:

    1. charAt:

    • 此方法返回位于字符串的指定索引处的字符。该字符串的索引从零开始。
    • 该方法的返回指定索引处char值。
    • 所以为了实现单元测试,我在Complex.java文件中添加如下代码:
    //测试一
    public static char String_charAt(String str, int i) {
        return str.charAt(i);
    }
    
    //取测试一结果
    public static char getString_charAt(String str, int i) {
        return String_charAt(str, i);
    }
    

    ComplexTest.java中添加如下代码对其进行测试:

    @Test
    public void testString_charAt() throws Exception {
        assertEquals('d', Complex.getString_charAt(str,0));
        assertEquals('g', Complex.getString_charAt(str,3));
        assertEquals('n', Complex.getString_charAt(str,6));
    }
    

    这里需要用到的包为:

    import java.lang.*;
    
    

    测试数组为:

    String str = "dangranshixuanzeyuanliangtala";
    

    最后测试结果如下:

    2.split:

    • 这个方法有两个变体,并分割这个字符串围绕给定的正则表达式匹配。
    • 返回由分割这个字符串围绕给定的正则表达式匹配计算字符串数组。
    • 为了实现单元测试,我在Complex.java文件中添加如下代码:
    //测试二
    public static String[] String_split(String str) {
        String[] strsort = str.split(":");
        return strsort;
    }
    
    //取测试二结果
    public static String[] getString_split(String str) {
        return String_split(str);
    }
    

    ComplexTest.java中添加如下代码对其进行测试:

    @Test
    public void testString_split() throws Exception {
        assertEquals("dang", Complex.getString_split(str2)[0]);
        assertEquals("yuan", Complex.getString_split(str2)[5]);
        assertEquals("liang", Complex.getString_split(str2)[6]);
    }
    

    这里需要用到的包为:

    import java.lang.*;
    
    

    测试数组为:

    String str2 = "dang:ran:shi:xuan:ze:yuan:liang:ta:la";
    

    最后测试结果如下:

    3. sort

    • 我使用的sort为java.util.Arrays.sort(char[]), 方法字符指定数组排序按数字升序顺序。
    • 此方法不返回任何值
    • 为了实现单元测试,我在Complex.java文件中添加如下代码:
    //测试三
    public static String[] Arrays_sort(String[] str3) {
        Arrays.sort(str3);
        return str3;
    }
    
    //取测试三结果
    public static String[] getArrays_sort(String[] str3) {
        return Arrays_sort(str3);
    }
    

    ComplexTest.java中添加如下代码对其进行测试:

    @Test
    public void testgetArrays_sort() throws Exception {
        //ArraysTest(str3);
        assertEquals("dang", Complex.getArrays_sort(str3)[0]);
        assertEquals("ta", Complex.getArrays_sort(str3)[5]);
        assertEquals("xuan", Complex.getArrays_sort(str3)[6]);
    }
    

    这里需要用到的包为:

    import java.util.Arrays;
    
    

    测试数组为:

    String[] str3 = new String[]{"dang", "ran", "shi", "xuan", "ze", "yuan", "liang", "ta", "la"};
    

    最后测试结果如下:

    4. binarySearch

    • 方法搜索指定double数组,使用二进制搜索算法来指定值。该数组必须在进行此调用之前进行排序。如果不排序,则结果是不确定的。
    • 此方法返回搜索键的索引,如果它包含在数组中,否则它返回(- (插入点)- 1)。插入点是在将键插入数组的那一点:第一个元素比键大,或如果阵列中的所有元素都小于指定的键的索引大于a.length。
    • 为了实现单元测试,我在Complex.java文件中添加如下代码:
    //测试四
    public static double[] Arrays_binarySearch(double[] str4) {
        Arrays.sort(str4);
        return str4;
    }
    
    //取测试四结果
    public static double[] getArrays_binarySearch(double[] str4) {
        return Arrays_binarySearch(str4);
    }
    

    ComplexTest.java中添加如下代码对其进行测试:

    @Test
    public void testgetArrays_binarySearch() throws Exception {
        //ArraysTest2(str4);
        assertEquals(1, Arrays.binarySearch(Complex.getArrays_binarySearch(str4), 5.4));
        assertEquals(0, Arrays.binarySearch(Complex.getArrays_binarySearch(str4), 4.6));
        assertEquals(4, Arrays.binarySearch(Complex.getArrays_binarySearch(str4), 49.2));
    }
    

    这里需要用到的包为:

    import java.util.Arrays;
    
    

    测试数组为:

    double str4[] = {5.4, 4.6, 49.2, 9.2, 35.4};
    

    最后测试结果如下:

    练习总结及git链接

    Complex.java

    ComplexTest.java

    练习收获:

    通过这次课堂练习,使我进一步加深了对于TDD方式的理解和对使用assertEquals掌握,并且学会了charAtsplitsortbinarySearch这些方法的使用,收获良多。

  • 相关阅读:
    linux cfs调度器
    运算符重载
    linux cfs调度器_模型实现
    linux cfs调度器_理论模型
    jiffies存放
    在C++中实现不可继承的类
    装饰模式(Decorator Pattern)--------结构型模式
    How to use base class's assignment operator in C++
    组合模式(Composite Pattern) ------------结构型模式
    what's the help of "unnecessary" pointer comparison
  • 原文地址:https://www.cnblogs.com/blackay03/p/6839127.html
Copyright © 2011-2022 走看看