type
status
date
slug
summary
tags
category
icon
password

Ad Hoc Testing

这是一种临时测试方法
这是一段用于检测排序程序是否正确的代码
首先给出输入、以及预期输出,通过比对经过排序函数的输出与预期是否相符,得出排序程序是否正确
如果进行数组比较时,需要使用java.util.Arrays.equals(input, expected)进行比较
原因其实跟 C 语言差不多,因为如果使用==判断,则是在比较地址位置

J Unit

Selection Sort 选择排序

找到最小值

int cmp = x[i].compareTo(x[smallestIndex])
具体来说,compareTo() 是 String 类的方法,它比较两个字符串的字典顺序,返回值的含义如下:
  • 返回值为 0:两个字符串相等。
  • 返回值为负数(小于 0)x[i] 字符串在字典顺序上小于 x[smallestIndex] 字符串。
  • 返回值为正数(大于 0)x[i] 字符串在字典顺序上大于 x[smallestIndex] 字符串。
这里传入的是一个字符串,然而字符串无法用==比较,因而需要调用方法

进行交换

这里对于找最小值做出了一些修改:为了后续交换的便利,把返回值从最小值改成了最小值对应的index
在swap中,需要注意新定义一个temp中间变量,用于帮助交换
这里用String temp而不是char的原因是:String[]中的每一个元素的数据类型都是string,这里没有用char[]创建数组

递归运算

内部定义了一个同名但是private的sort函数,但是不会冲突
因为private只能在内部调用,而public可以在外部调用
public内通过调用private的sort函数,实现了从指定某一位开始排序的功能
在递归的时候,对于开始的index逐次加一

Debug

这里通过debugger,找到了一处错误,以上代码是修改后的
对findsmallest函数,应该增加一个参数,用于制定开始index,以和sort的范围对应

Better J Unit

1. Annotate each test with @org.junit.Test

  • 注解每个测试方法:为了让 JUnit 识别哪些方法是测试方法,应该在每个测试方法前加上 @Test 注解。这个注解告诉 JUnit 该方法是一个测试用例,JUnit 会自动执行这些带有 @Test 注解的方法。

2. Change all test methods to non-static

  • 将所有测试方法改为非静态方法:传统的做法是把测试方法定义为静态的,这样可以避免创建测试类的实例。然而,现代的 JUnit 测试要求测试方法是非静态的,以便为每个测试方法创建一个新的实例,这样能够更好地管理每个测试的状态。
  • 这样做有助于避免不同测试方法之间的共享状态,确保测试的独立性。

3. Use a JUnit runner to run all tests and tabulate results

  • 使用 JUnit 运行器:JUnit 提供了运行器(runner)来自动执行所有测试,并统计结果。运行器会自动调用所有带有 @Test 注解的方法,执行测试,并根据每个测试的执行情况生成结果。
  • IntelliJ 提供了默认的测试运行器:如果你在 IntelliJ IDEA 中使用 JUnit,只需点击 "Run" 按钮即可自动运行所有测试,无需手动编写 main 方法来调用测试方法。
  • 删除 main 方法:在使用 JUnit 运行器时,你不再需要自己写 main 方法来调用测试,JUnit 会自动处理这一部分。
  • 输出渲染:JUnit 的输出会被自动渲染成易于阅读的格式,不需要手动打印测试结果,这使得阅读测试报告更方便。

4. Command line option:

  • 如果不使用 IDE (如 IntelliJ),你也可以通过命令行工具来运行测试。在图片中提到,使用命令行时需要特别注意。你可以使用命令行工具(如 jh61b 运行器)来执行测试,但通常不推荐这种方法,最好是使用 IDE 提供的自动化功能。

5. Rendered output is easier to read, no need to manually invoke tests

  • 渲染输出更易于阅读:JUnit 自动生成的测试输出通常会更易于理解,不再需要你自己手动调用测试方法或打印测试结果。所有的测试执行和结果汇总都由 JUnit 运行器处理,生成易于理解的格式。

import

和python一样,通过导入库/类,简化对于函数/方法的调用
这样可以简化调用方式

TDD

notion image
相较于自动评测驱动的开发,测试驱动的开发更值得推荐
Lab 2Lec 2 - Defining and Using Classes
Loading...
昊卿
昊卿
一个普通的干饭人🍚
最新发布
大一上学期总结
2025-3-9
4.1 多层感知机
2025-3-7
3.4 softmax 回归
2025-3-5
3.3 线性回归的简洁实现
2025-3-5
3.2 线性回归的从零开始实现
2025-3-5
3.1 线性回归
2025-3-5