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 工具功能强大,注解和断言方法让写测试用例很方便。参数化测试能全面覆盖情况,让代码更健壮。异常处理和代码设计也很关键,好的异常处理让程序更稳定,合理的代码设计方便进行单元测试。以后编程我会重视单元测试,提高代码质量。

posted @ 2025-05-21 11:21  Code13  阅读(24)  评论(0)    收藏  举报