使用JUnit
注意
这儿学的是 JUnit 4 版本框架,不适用于 JUnit 5。
# Assert.assertEquals()
方法
Assert
是 org.junit
包下的一个类,Assert.assertEquals()
可用于在单元测试中根据预期值断言测试结果。这个方法有两个参数 expected
和 actual
:
expected
表示预期值actual
表示被测试方法产生的实际值
# 一个计算器案例
# 编写方法
package jim.demo.unittesting;
public class Calculator {
public static int sum(int numberA, int numberB) {
return numberA + numberB;
}
public static int subtract(int numberA, int numberB) {
return numberA - numberB;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 单元测试
提示
来自 org.junit
的注解 @Test
表示一个测试用例。
此外,这里利用了伪随机数 ThreadLocalRandom
来测试先前编写的方法。
package jim.demo.unittesting.test;
import jim.demo.unittesting.Calculator;
import org.junit.Assert;
import org.junit.Test;
import java.util.concurrent.ThreadLocalRandom;
public class CalculatorTest {
int numberA = ThreadLocalRandom.current().nextInt(-9999, 9999);
int numberB = ThreadLocalRandom.current().nextInt(-9999, 9999);
@Test
public void sum() {
Assert.assertEquals(numberA + numberB, Calculator.sum(numberA, numberB));
}
@Test
public void subtract() {
Assert.assertEquals(numberA - numberB, Calculator.subtract(numberA, numberB));
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 应用
提示
main()
中只有一行代码 run()
。先前编写的方法在 run()
中调用。这个案例还能再调整和细化,但为了简洁和节省时间就点到为止。
package jim.demo.unittesting;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
run();
}
private static void run() {
System.out.println("-----Welcome!----");
System.out.println("Please select mode(sum/subtract):");
Scanner scanner = new Scanner(System.in);
String mode = scanner.next();
System.out.println("Please enter two integer number:");
int numberA = scanner.nextInt();
int numberB = scanner.nextInt();
switch (mode) {
case "sum":
System.out.println(Calculator.sum(numberA, numberB));
break;
case "subtract":
System.out.println(Calculator.subtract(numberA, numberB));
break;
default:
System.out.println("Something wrong!");
break;
}
System.out.println("-----Goodbye!----");
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
编辑 (opens new window)
上次更新: 2022/10/25, 17:57:56