20145207李祉昂 WEB基础实践

Posted 20145207李祉昂

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20145207李祉昂 WEB基础实践相关的知识,希望对你有一定的参考价值。

《Java 程序设计》课堂实践项目-Arrays和String单元测试 课后学习总结

目录

  • 改变
  • Arrays和String单元测试实验要求
  • 课堂实践成果
  • 课后思考

改变

    修改了博客整体布局,改变了之前贴个截图粘个代码就糊弄完的观念,这次布局和内容都有修改。

    补充了部分没有讲过的测试类的样例,图片等都是再次运行之后截得细致的图片,电脑上也有原图。

Arrays和String单元测试实践要求

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

课堂实践成果

代码如下:

import static org.junit.Assert.*;
/** * Created by Lenovo on 2017-06-11. */ /** * Created by 20145207 on 2017/5/4. */
import junit.framework.TestCase; import org.junit.Test;
import java.lang.*; import java.util.Arrays;
public class ComplexTest extends TestCase {
Complex c1 = new Complex(0, 3);
Complex c2 = new Complex(-1, -1);
Complex c3 = new Complex(2, 1);
String str = "dangranshixuanzeyuanliangtala";
String str2 = "dang:ran:shi:xuan:ze:yuan:liang:ta:la";//String[] str2sort = str2.split(":");
String[] str3 = new String[]{"dang", "ran", "shi", "xuan", "ze", "yuan", "liang", "ta", "la"};
@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));
}
@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]);
}
@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]);
}
@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));
}

 实验截图如下:

需要注意以下两点我做实验时遇到的问题:

  • 测试sort时输入的是字符串数组还是字符数组这里出现了问题,之后查API发现其实有很多类型。
  • 测试binarySearch是输入的是double类型的,因为上来就用了字符串数组,导致出错

课后思考

 关于测试

1.正常情况我是通过随机选取三个测试用例进行测试的

2.错误情况是直接输入错误答案看是否通过测试

3.边界情况是测试数组第一个和最后一个,截图为正常情况的测试。

关于过程

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);
}

在complex.test中添加如下代码对其进行测试:

@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));
}

测试数组为:

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);
}

在complex.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]);
}

测试数组为:

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

最后测试结果如下:

3.sort

  • 我使用sort方法字符指定数组排序按数字升序顺序。
  • 此方法不返回任何值
  • 为了实现单元测试,我在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);
}

在complex.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]);
}

测试数组为:

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

最后测试结果如下:

4.benarysearch

  • 方法搜索指定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));
}

测试数组为:

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

最后测试结果如下:

学习反思及总结

重新做了一遍实验加深了对TDD的理解,同时也提高了对测试代码应用方面的能力,温故而知新。关于代码在上面就有总结过就不重复了。·

以上是关于20145207李祉昂 WEB基础实践的主要内容,如果未能解决你的问题,请参考以下文章

20145207 Exp9 web安全基础实践

信息安全系统设计基础实验五:

20145207 实验三 敏捷开发与XP实践 实验报告

20145207《信息安全系统设计基础》第十二周学习总结

20145207 《信息安全系统设计基础》第5周学习总结

20145207 《信息安全系统设计基础》第2周学习总结