5.13日报
完成软件测试实验四
实验四 单元测试2
一、实验目的
1、掌握单元测试的基本理论和作用。
2、掌握典型单元测试工具 JUnit 的使用
二、实验内容
实验任务 1 :
请按以下操作步骤完成一个基本的 JUnit 测试实例。
以下是在IntelliJ IDEA环境下使用JUnit对Calculator类进行单元测试的详细步骤:
步骤1:创建Java项目
1. 打开IntelliJ IDEA → 新建项目 → 选择"Java" → 设置项目名称和路径 → 创建
步骤2:创建Calculator类
public class Calculator {
// 加法
public int add(int a, int b) {
return a + b;
}
// 减法
public int subtract(int a, int b) {
return a - b;
}
// 乘法
public int multiply(int a, int b) {
return a * b;
}
// 除法
public double divide(int a, int b) {
if(b == 0) throw new ArithmeticException("Cannot divide by zero");
return (double) a / b;
}
}
步骤3:添加JUnit依赖
1. 右键项目 → Open Module Settings
2. 选择"Libraries" → "+" → From Maven
3. 输入org.junit.jupiter:junit-jupiter-api:5.8.2 → 确定
4. 重复添加:
- org.junit.jupiter:junit-jupiter-engine:5.8.2
- org.junit.jupiter:junit-jupiter-params:5.8.2
步骤4:创建测试类
1. 在src/test/java目录右键 → New → Java Class → 命名为CalculatorTest
2. 添加测试类注解:
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class CalculatorTest {
private Calculator calculator;
@BeforeEach
void setUp() {
calculator = new Calculator();
}
@Test
void testAdd() {
assertEquals(5, calculator.add(2, 3));
assertEquals(-1, calculator.add(2, -3));
}
@Test
void testSubtract() {
assertEquals(1, calculator.subtract(4, 3));
assertEquals(7, calculator.subtract(10, 3));
}
@Test
void testMultiply() {
assertEquals(6, calculator.multiply(2, 3));
assertEquals(-6, calculator.multiply(2, -3));
}
@Test
void testDivide() {
assertEquals(2.0, calculator.divide(6, 3));
assertEquals(3.333, calculator.divide(10, 3), 0.001);
}
@Test
void testDivideByZero() {
assertThrows(ArithmeticException.class, () -> calculator.divide(5, 0));
}
}
步骤5:运行测试
1. 点击测试类左侧的绿色箭头图标 ▶️
2. 选择"Run 'CalculatorTest'"
3. 查看结果:
绿色进度条:所有测试通过
实验任务 2 :编写程序判断闰年,设计测试⽤例并⽤Junit进⾏测试。
步骤1创建LeapYearChecker类
输入代码:
public class LeapYearChecker {
public boolean isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
}
步骤2创建测试类:LeapYearCheckerTest
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class LeapYearCheckerTest {
@Test
public void testLeapYear() {
LeapYearChecker checker = new LeapYearChecker();
assertTrue(checker.isLeapYear(2000)); // 能被400整除
assertTrue(checker.isLeapYear(2020)); // 能被4整除但不能被100整除
assertFalse(checker.isLeapYear(1900)); // 能被100整除但不能被400整除
assertFalse(checker.isLeapYear(2021)); // 不能被4整除
}
}
步骤4:运行测试:
绿色进度条:所有测试通过
实验任务3:编写程序判断非三角形,等腰三角形,等边三角形,直角三角形,钝角三角形,锐角三角形,设计测试用例并用JUnit进行测试。
步骤1:创建TriangleClassifier类
public class TriangleClassifier {
public String classify(int a, int b, int c) {
if (a + b <= c || a + c <= b || b + c <= a) {
return "非三角形";
}
if (a == b && b == c) {
return "等边三角形";
}
if (a == b || a == c || b == c) {
return "等腰三角形";
}
if (a * a + b * b == c * c || a * a + c * c == b * b || b * b + c * c == a * a) {
return "直角三角形";
}
if (a * a + b * b < c * c || a * a + c * c < b * b || b * b + c * c < a * a) {
return "钝角三角形";
}
return "锐角三角形";
}
}
步骤2:创建测试类:testTriangleClassification
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class TriangleClassifierTest {
@Test
public void testTriangleClassification() {
TriangleClassifier classifier = new TriangleClassifier();
assertEquals("非三角形", classifier.classify(1, 2, 4));
assertEquals("等边三角形", classifier.classify(3, 3, 3));
assertEquals("等腰三角形", classifier.classify(3, 3, 4));
assertEquals("直角三角形", classifier.classify(3, 4, 5));
assertEquals("钝角三角形", classifier.classify(2, 3, 4));
assertEquals("锐角三角形", classifier.classify(5, 6, 7));
}
}
步骤3:运行测试
实验体会
这次单元测试实验让我收获满满。做 Calculator 类测试时,我明白了单元测试能快速定位问题,保证代码质量、节省调试时间。JUnit 工具功能强大,注解和断言方法让写测试用例很方便。参数化测试能全面覆盖情况,让代码更健壮。异常处理和代码设计也很关键,好的异常处理让程序更稳定,合理的代码设计方便进行单元测试。以后编程我会重视单元测试,提高代码质量。

浙公网安备 33010602011771号