From c10e84da8b612dce9744358ce78ac05d81ac2197 Mon Sep 17 00:00:00 2001 From: pc9pizjb6 <122855890@qq.com> Date: Sat, 1 Nov 2025 22:56:53 +0800 Subject: [PATCH] ADD file via upload --- StudentManagementTest.java | 170 +++++++++++++++++++++++++++++++++++++ 1 file changed, 170 insertions(+) create mode 100644 StudentManagementTest.java diff --git a/StudentManagementTest.java b/StudentManagementTest.java new file mode 100644 index 0000000..e44f1e8 --- /dev/null +++ b/StudentManagementTest.java @@ -0,0 +1,170 @@ +package com.studentmanagement; + +import com.studentmanagement.controller.StudentController; +import com.studentmanagement.model.Student; +import com.studentmanagement.exception.StudentNotFoundException; +import com.studentmanagement.exception.DuplicateStudentException; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import java.util.List; +import static org.junit.jupiter.api.Assertions.*; + +/** + * 学生管理系统测试类 + * 测试Model和Controller层的核心功能 + */ +public class StudentManagementTest { + private StudentController controller; + + @BeforeEach + void setUp() { + // 每个测试方法执行前初始化控制器 + controller = new StudentController(); + } + + @Test + void testGetAllStudents() { + // 测试获取所有学生 + List students = controller.getAllStudents(); + assertNotNull(students); + // 初始数据有3个学生 + assertTrue(students.size() >= 3); + } + + @Test + void testGetStudentById_Found() throws StudentNotFoundException { + // 测试根据ID查找存在的学生 + Student student = controller.getStudentById(1); + assertNotNull(student); + assertEquals(1, student.getId()); + assertEquals("张三", student.getName()); + } + + @Test + void testGetStudentById_NotFound() { + // 测试根据ID查找不存在的学生 + assertThrows(StudentNotFoundException.class, () -> { + controller.getStudentById(999); + }); + } + + @Test + void testAddStudent_Success() throws DuplicateStudentException { + // 测试添加新学生成功 + Student newStudent = new Student(10, "测试学生", 22, "软件工程", 88.0); + controller.addStudent(newStudent); + + // 验证学生是否添加成功 + try { + Student addedStudent = controller.getStudentById(10); + assertNotNull(addedStudent); + assertEquals("测试学生", addedStudent.getName()); + } catch (StudentNotFoundException e) { + fail("学生添加失败,找不到添加的学生"); + } + } + + @Test + void testAddStudent_Duplicate() throws DuplicateStudentException { + // 测试添加重复ID的学生 + Student student1 = new Student(20, "重复测试1", 23, "数据库", 92.0); + controller.addStudent(student1); + + // 尝试添加相同ID的学生 + Student student2 = new Student(20, "重复测试2", 24, "网络", 85.0); + assertThrows(DuplicateStudentException.class, () -> { + controller.addStudent(student2); + }); + } + + @Test + void testUpdateStudent_Success() throws StudentNotFoundException, DuplicateStudentException { + // 先添加一个学生用于测试更新 + Student student = new Student(30, "待更新学生", 20, "Java基础", 75.0); + controller.addStudent(student); + + // 更新学生信息 + Student updatedStudent = new Student(30, "已更新学生", 21, "Java高级", 85.0); + controller.updateStudent(updatedStudent); + + // 验证更新是否成功 + Student retrievedStudent = controller.getStudentById(30); + assertEquals("已更新学生", retrievedStudent.getName()); + assertEquals(21, retrievedStudent.getAge()); + assertEquals("Java高级", retrievedStudent.getCourse()); + assertEquals(85.0, retrievedStudent.getGrade()); + } + + @Test + void testUpdateStudent_NotFound() { + // 测试更新不存在的学生 + Student student = new Student(999, "不存在的学生", 22, "测试课程", 80.0); + assertThrows(StudentNotFoundException.class, () -> { + controller.updateStudent(student); + }); + } + + @Test + void testDeleteStudent_Success() throws StudentNotFoundException, DuplicateStudentException { + // 先添加一个学生用于测试删除 + Student student = new Student(40, "待删除学生", 22, "测试课程", 78.0); + controller.addStudent(student); + + // 删除学生 + controller.deleteStudent(40); + + // 验证删除是否成功 + assertThrows(StudentNotFoundException.class, () -> { + controller.getStudentById(40); + }); + } + + @Test + void testDeleteStudent_NotFound() { + // 测试删除不存在的学生 + assertThrows(StudentNotFoundException.class, () -> { + controller.deleteStudent(999); + }); + } + + @Test + void testGetStudentsByCourse() { + // 测试根据课程查找学生 + List javaStudents = controller.getStudentsByCourse("Java编程"); + assertNotNull(javaStudents); + // 初始数据中应该有一个Java编程的学生 + assertTrue(javaStudents.size() >= 1); + + // 验证所有返回的学生都是Java编程课程 + for (Student student : javaStudents) { + assertTrue(student.getCourse().equalsIgnoreCase("Java编程")); + } + } + + @Test + void testGetStudentsByGradeAbove() { + // 测试查找成绩高于指定分数的学生 + List highGradeStudents = controller.getStudentsByGradeAbove(88.0); + assertNotNull(highGradeStudents); + + // 验证所有返回的学生成绩都高于等于88.0 + for (Student student : highGradeStudents) { + assertTrue(student.getGrade() >= 88.0); + } + } + + @Test + void testCalculateAverageGradeByCourse() { + // 测试计算课程平均成绩 + double avgGrade = controller.calculateAverageGradeByCourse("Java编程"); + // 初始数据中Java编程的学生成绩为85.5 + assertTrue(avgGrade > 0); + } + + @Test + void testCalculateAverageAge() { + // 测试计算平均年龄 + double avgAge = controller.calculateAverageAge(); + assertTrue(avgAge > 0); + } +} \ No newline at end of file