cs61b笔记 3.Testing

对于中高级程序员来说,最重要的技能之一就是判断代码是否正确的能力。在本章中,我们将讨论如何编写测试来评估代码的正确性。同时,我们还将讨论一种名为 "选择排序 "的排序算法。

临时测试

1. !=和==字符的滥用:只有两个数组都指向同一地址的时候,!=才返回true。如果是两个不同地址的完全相同的。

2. 为 Sort.sort 编写测试虽然繁琐,但相对简单。我们只需创建一个输入,调用 sort,然后检查该方法的输出是否正确。如果输出不正确,我们就打印出第一个不匹配项并终止测试。例如,我们可以创建一个如下的测试类:

TestSort.java

public class TestSort {
    /** Tests the sort method of the Sort class. */
    public static void testSort() {
        String[] input = {"i", "have", "an", "egg"};
        String[] expected = {"an", "egg", "have", "i"};
        Sort.sort(input);
        for (int i = 0; i < input.length; i += 1) {
            if (!input[i].equals(expected[i])) {
                System.out.println("Mismatch in position " + i + ", expected: " + expected + ", but got: " + input[i] + ".");
                break;
            }
        }
    }

    public static void main(String[] args) {
        testSort();
    }
}

如下图所示,我们可以创建一个空白的 Sort.sort 方法来测试我们的测试:

Sort.java

public class Sort {
    /** Sorts strings destructively. */
    public static void sort(String[] x) {        
    }
}

JUnit Testing

org.junit 库提供了许多有用的方法和功能,可以简化测试的编写。例如,我们可以将上面的简单临时测试替换为

public static void testSort() {
    String[] input = {"i", "have", "an", "egg"};
    String[] expected = {"an", "egg", "have", "i"};
    Sort.sort(input);
    org.junit.Assert.assertArrayEquals(expected, input);
}

Selection Sort

:关于java里.length和.length()的区别:

.length 是用于获取数组长度的方法。

.length()适用于获取字符串相关对象的方法。

.length不适用于对象,仅适用于数组。.length()适用于字符串,字符串不是一个原始数组。

字符串数组本质上是一个数组,应该用.length才对。

注2:java字符串比大小:a.compareTo(b) ,a和b比大小。

a=b,返回0;

若该a按字典顺序小于参数字符串b,则返回值小于0;

若a按字典顺序大于参数字符串b,则返回值大于0。

Java中的compareTo()方法,返回参与比较的前后两个字符串的ASCII码的差值。

注3:java中的输入操作:

原链接

  • ​​​​​​​scanner类实现:
    import java.util.Scanner;
    public class TestDemo1007_4 {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            int a = scanner.nextInt();
            System.out.println(a);
        }
    }
    

    而这里的“int a = scanner.nextInt();"表示从键盘输入的是一个整数,但如果想输入字符串就需要下面这样写:scanner.next()

     Scanner scanner = new Scanner(System.in);
     String a = scanner.next();
     System.out.println(a);
    

    输入多个字符串:scanner.nextLine()

     Scanner scanner = new Scanner(System.in);
     String a = scanner.nextLine();
     System.out.println(a);
    

其他方法不建议使用。

@org.junit.Test

在每个方法前加上@org.junit.Test, 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值