parent
76b30710b6
commit
eaac2f5418
@ -1,170 +0,0 @@
|
||||
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<Student> 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<Student> 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<Student> 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);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in new issue