Advertisement
HawkeyeHS

Student Management System Test

Apr 27th, 2025 (edited)
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.39 KB | Software | 0 0
  1. import static org.junit.jupiter.api.Assertions.*;
  2.  
  3. import org.junit.jupiter.api.BeforeEach;
  4. import org.junit.jupiter.api.Test;
  5.  
  6. class StudentManagementSystemTest {
  7.  
  8.     private StudentManagementSystem sms;
  9.  
  10.     @BeforeEach
  11.     void setUp() {
  12.         sms = new StudentManagementSystem();
  13.         sms.addStudent(1, "John Doe", 20);
  14.         sms.addStudent(2, "Jane Smith", 21);
  15.     }
  16.  
  17.     // Positive Test Cases
  18.  
  19.     @Test
  20.     void testAddStudentSuccessfully() {
  21.         sms.addStudent(3, "Alice Johnson", 22);
  22.         assertNotNull(sms.studentMap.get(3), "Alice should be added successfully");
  23.     }
  24.  
  25.     @Test
  26.     void testAddGradeToStudentSuccessfully() {
  27.         sms.addGradeToStudent(1, 85);
  28.         sms.addGradeToStudent(1, 90);
  29.         assertEquals(87.5, sms.studentMap.get(1).calculateAverageGrade(), 0.001, "John's average should be 87.5");
  30.     }
  31.  
  32.     @Test
  33.     void testUpdateAttendanceSuccessfully() {
  34.         sms.updateStudentAttendance(1, 25);
  35.         assertEquals(25, sms.studentMap.get(1).attendance, "John's attendance should be 25");
  36.     }
  37.  
  38.     @Test
  39.     void testCalculateAverageGradeCorrectly() {
  40.         sms.addGradeToStudent(2, 70);
  41.         sms.addGradeToStudent(2, 80);
  42.         assertEquals(75.0, sms.studentMap.get(2).calculateAverageGrade(), 0.001, "Jane's average should be 75.0");
  43.     }
  44.  
  45.     @Test
  46.     void testPerformanceAssessment() {
  47.         sms.addGradeToStudent(1, 95);
  48.         sms.addGradeToStudent(1, 92);
  49.         assertEquals("Excellent", sms.studentMap.get(1).getPerformance(), "John's performance should be Excellent");
  50.     }
  51.  
  52.     // Negative Test Cases
  53.  
  54.     @Test
  55.     void testAddStudentWithDuplicateId() {
  56.         sms.addStudent(1, "Duplicate John", 23);
  57.         assertEquals("John Doe", sms.studentMap.get(1).name, "Original student should not be overwritten");
  58.     }
  59.  
  60.     @Test
  61.     void testAddGradeToNonExistentStudent() {
  62.         Exception exception = assertThrows(NullPointerException.class, () -> {
  63.             sms.addGradeToStudent(5, 80);
  64.         });
  65.         assertNotNull(exception, "Adding grade to non-existent student should throw exception");
  66.     }
  67.  
  68.     @Test
  69.     void testUpdateAttendanceForNonExistentStudent() {
  70.         Exception exception = assertThrows(NullPointerException.class, () -> {
  71.             sms.updateStudentAttendance(99, 30);
  72.         });
  73.         assertNotNull(exception, "Updating attendance for non-existent student should throw exception");
  74.     }
  75.  
  76.     @Test
  77.     void testCalculateAverageWithoutGrades() {
  78.         double avg = sms.studentMap.get(2).calculateAverageGrade();
  79.         assertEquals(0.0, avg, "Average should be 0.0 if no grades are added");
  80.     }
  81.  
  82.     @Test
  83.     void testPerformanceWithoutGrades() {
  84.         String performance = sms.studentMap.get(2).getPerformance();
  85.         assertEquals("Needs Improvement", performance, "Performance should be 'Needs Improvement' if no grades exist");
  86.     }
  87.  
  88.     @Test
  89.     void testAddNegativeGrade() {
  90.         sms.addGradeToStudent(1, -50); // Logically wrong but allowed in current system
  91.         double avg = sms.studentMap.get(1).calculateAverageGrade();
  92.         assertTrue(avg < 0, "Average should reflect negative grade if system doesn't prevent it");
  93.     }
  94.  
  95.     @Test
  96.     void testZeroAttendance() {
  97.         sms.updateStudentAttendance(1, 0);
  98.         assertEquals(0, sms.studentMap.get(1).attendance, "Attendance should be 0 if updated as 0");
  99.     }
  100. }
  101.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement