test: reorganize Student tests and fix duplicate test file

This commit is contained in:
2026-08-28 12:06:00 +04:00
parent 80ebc71366
commit daa6583470
3 changed files with 93 additions and 257 deletions
@@ -55,8 +55,6 @@ public class Student {
return new Student(this.groupNumber, this.averageGrade, recordBookNumber); return new Student(this.groupNumber, this.averageGrade, recordBookNumber);
} }
}
public static double getMaxAverageGrade() { public static double getMaxAverageGrade() {
return MAX_AVERAGE_GRADE; return MAX_AVERAGE_GRADE;
} }
@@ -1,139 +0,0 @@
package ru.project.student;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class StudentTest {
@Test
void testValidStudentCreation() {
Student student = new Student("A12", 4.5, 12345);
assertEquals("A12", student.getGroupNumber());
assertEquals(4.5, student.getAverageGrade());
assertEquals(12345, student.getRecordBookNumber());
}
@Test
void testValidGroupNumbers() {
assertDoesNotThrow(() -> new Student("A12", 4.5, 1));
assertDoesNotThrow(() -> new Student("B32", 4.5, 1));
assertDoesNotThrow(() -> new Student("Z00", 4.5, 1));
}
@Test
void testInvalidGroupNumbers() {
assertThrows(IllegalArgumentException.class, () -> new Student("a12", 4.5, 1));
assertThrows(IllegalArgumentException.class, () -> new Student("A1", 4.5, 1));
assertThrows(IllegalArgumentException.class, () -> new Student("A123", 4.5, 1));
assertThrows(IllegalArgumentException.class, () -> new Student("AA1", 4.5, 1));
assertThrows(IllegalArgumentException.class, () -> new Student("а1А", 4.5, 1));
assertThrows(IllegalArgumentException.class, () -> new Student("аа!!а123", 4.5, 1));
assertThrows(IllegalArgumentException.class, () -> new Student("23фи!12", 4.5, 1));
assertThrows(IllegalArgumentException.class, () -> new Student("№№###*()", 4.5, 1));
}
@Test
void testValidAverageGrades() {
assertDoesNotThrow(() -> new Student("A12", 0.0, 1));
assertDoesNotThrow(() -> new Student("A12", 5.0, 1));
}
@Test
void testInvalidAverageGrades() {
assertThrows(IllegalArgumentException.class, () -> new Student("A12", -1.0, 1));
assertThrows(IllegalArgumentException.class, () -> new Student("A12", 6.0, 1));
}
@Test
void testValidRecordBookNumbers() {
assertDoesNotThrow(() -> new Student("A12", 4.5, 1));
assertDoesNotThrow(() -> new Student("A12", 4.5, 12345));
}
@Test
void testInvalidRecordBookNumbers() {
assertThrows(IllegalArgumentException.class, () -> new Student("A12", 4.5, 0));
assertThrows(IllegalArgumentException.class, () -> new Student("A12", 4.5, -1));
}
@Test
void testWithGroupNumber() {
Student original = new Student("A12", 4.5, 12345);
Student updated = original.withGroupNumber("B32");
assertNotSame(original, updated);
assertEquals("B32", updated.getGroupNumber());
assertEquals(4.5, updated.getAverageGrade());
assertEquals(12345, updated.getRecordBookNumber());
assertEquals("A12", original.getGroupNumber());
}
@Test
void testWithAverageGrade() {
Student original = new Student("A12", 4.5, 12345);
Student updated = original.withAverageGrade(4.8);
assertNotSame(original, updated);
assertEquals(4.8, updated.getAverageGrade());
assertEquals("A12", updated.getGroupNumber());
assertEquals(12345, updated.getRecordBookNumber());
assertEquals(4.5, original.getAverageGrade());
}
@Test
void testWithRecordBookNumber() {
Student original = new Student("A12", 4.5, 12345);
Student updated = original.withRecordBookNumber(99999);
assertNotSame(original, updated);
assertEquals(99999, updated.getRecordBookNumber());
assertEquals("A12", updated.getGroupNumber());
assertEquals(4.5, updated.getAverageGrade());
assertEquals(12345, original.getRecordBookNumber());
}
@Test
void testWithInvalidGroupNumber() {
Student original = new Student("A12", 4.5, 12345);
assertThrows(IllegalArgumentException.class,
() -> original.withGroupNumber("a12"));
assertEquals("A12", original.getGroupNumber()); // не изменился
}
@Test
void testWithInvalidAverageGrade() {
Student original = new Student("A12", 4.5, 12345);
assertThrows(IllegalArgumentException.class,
() -> original.withAverageGrade(6.0));
assertEquals(4.5, original.getAverageGrade());
}
@Test
void testWithInvalidRecordBookNumber() {
Student original = new Student("A12", 4.5, 12345);
assertThrows(IllegalArgumentException.class,
() -> original.withRecordBookNumber(0));
assertEquals(12345, original.getRecordBookNumber());
}
@Test
void testEqualsAndHashCode() {
Student s1 = new Student("A12", 4.5, 12345);
Student s2 = new Student("A12", 4.5, 12345);
Student s3 = new Student("B32", 4.5, 12345);
Student s4 = new Student("A12", 4.8, 12345);
Student s5 = new Student("A12", 4.5, 99999);
assertEquals(s1, s2);
assertEquals(s1.hashCode(), s2.hashCode());
assertNotEquals(s1, s3);
assertNotEquals(s1, s4);
assertNotEquals(s1, s5);
assertNotEquals(s1, null);
assertNotEquals(s1, "some string");
}
}
@@ -2,167 +2,144 @@ package ru.project.student;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertNotEquals; import static org.junit.jupiter.api.Assertions.assertNotEquals;
import static org.junit.jupiter.api.Assertions.assertNotSame;
class StudentTest { class StudentTest {
@Test
void shouldCreateValidStudent() {
Student student = new StudentBuilder()
.setGroupNumber("101")
.setAverageGrade(4.5)
.setRecordBookNumber("12345")
.build();
assertEquals("101", student.getGroupNumber()); @Test
void testValidStudentCreation() {
Student student = new Student("A12", 4.5, 12345);
assertEquals("A12", student.getGroupNumber());
assertEquals(4.5, student.getAverageGrade()); assertEquals(4.5, student.getAverageGrade());
assertEquals("12345", student.getRecordBookNumber()); assertEquals(12345, student.getRecordBookNumber());
} }
@Test @Test
void shouldThrowExceptionWhenGroupNumberIsEmpty() { void testValidGroupNumbers() {
assertThrows(IllegalArgumentException.class, () -> { assertDoesNotThrow(() -> new Student("A12", 4.5, 1));
new StudentBuilder() assertDoesNotThrow(() -> new Student("B32", 4.5, 1));
.setGroupNumber("") assertDoesNotThrow(() -> new Student("Z00", 4.5, 1));
.setAverageGrade(4.5)
.setRecordBookNumber("12345")
.build();
});
} }
@Test @Test
void shouldThrowExceptionWhenAverageGradeIsGreaterThanFive() { void testInvalidGroupNumbers() {
assertThrows(IllegalArgumentException.class, () -> { assertThrows(IllegalArgumentException.class, () -> new Student("a12", 4.5, 1));
new StudentBuilder() assertThrows(IllegalArgumentException.class, () -> new Student("A1", 4.5, 1));
.setGroupNumber("101") assertThrows(IllegalArgumentException.class, () -> new Student("A123", 4.5, 1));
.setAverageGrade(6.0) assertThrows(IllegalArgumentException.class, () -> new Student("AA1", 4.5, 1));
.setRecordBookNumber("12345") assertThrows(IllegalArgumentException.class, () -> new Student("а1А", 4.5, 1));
.build(); assertThrows(IllegalArgumentException.class, () -> new Student("аа!!а123", 4.5, 1));
}); assertThrows(IllegalArgumentException.class, () -> new Student("23фи!12", 4.5, 1));
assertThrows(IllegalArgumentException.class, () -> new Student("№№###*()", 4.5, 1));
} }
@Test @Test
void shouldThrowExceptionWhenAverageGradeIsLessThanZero() { void testValidAverageGrades() {
assertThrows(IllegalArgumentException.class, () -> { assertDoesNotThrow(() -> new Student("A12", 0.0, 1));
new StudentBuilder() assertDoesNotThrow(() -> new Student("A12", 5.0, 1));
.setGroupNumber("101")
.setAverageGrade(-1.0)
.setRecordBookNumber("12345")
.build();
});
} }
@Test @Test
void shouldCreateStudentWhenAverageGradeIsZero() { void testInvalidAverageGrades() {
Student student = new StudentBuilder() assertThrows(IllegalArgumentException.class, () -> new Student("A12", -1.0, 1));
.setGroupNumber("101") assertThrows(IllegalArgumentException.class, () -> new Student("A12", 6.0, 1));
.setAverageGrade(0.0)
.setRecordBookNumber("12345")
.build();
assertEquals(0.0, student.getAverageGrade());
} }
@Test @Test
void shouldCreateStudentWhenAverageGradeIsFive() { void testValidRecordBookNumbers() {
Student student = new StudentBuilder() assertDoesNotThrow(() -> new Student("A12", 4.5, 1));
.setGroupNumber("101") assertDoesNotThrow(() -> new Student("A12", 4.5, 12345));
.setAverageGrade(5.0)
.setRecordBookNumber("12345")
.build();
assertEquals(5.0, student.getAverageGrade());
} }
@Test @Test
void shouldThrowExceptionWhenRecordBookNumberIsEmpty() { void testInvalidRecordBookNumbers() {
assertThrows(IllegalArgumentException.class, () -> { assertThrows(IllegalArgumentException.class, () -> new Student("A12", 4.5, 0));
new StudentBuilder() assertThrows(IllegalArgumentException.class, () -> new Student("A12", 4.5, -1));
.setGroupNumber("101")
.setAverageGrade(4.5)
.setRecordBookNumber("")
.build();
});
} }
@Test @Test
void shouldThrowExceptionWhenGroupNumberIsNull() { void testWithGroupNumber() {
assertThrows(IllegalArgumentException.class, () -> { Student original = new Student("A12", 4.5, 12345);
new StudentBuilder() Student updated = original.withGroupNumber("B32");
.setGroupNumber(null)
.setAverageGrade(4.5) assertNotSame(original, updated);
.setRecordBookNumber("12345") assertEquals("B32", updated.getGroupNumber());
.build(); assertEquals(4.5, updated.getAverageGrade());
}); assertEquals(12345, updated.getRecordBookNumber());
assertEquals("A12", original.getGroupNumber());
} }
@Test @Test
void shouldThrowExceptionWhenGroupNumberIsBlank() { void testWithAverageGrade() {
assertThrows(IllegalArgumentException.class, () -> { Student original = new Student("A12", 4.5, 12345);
new StudentBuilder() Student updated = original.withAverageGrade(4.8);
.setGroupNumber(" ")
.setAverageGrade(4.5) assertNotSame(original, updated);
.setRecordBookNumber("12345") assertEquals(4.8, updated.getAverageGrade());
.build(); assertEquals("A12", updated.getGroupNumber());
}); assertEquals(12345, updated.getRecordBookNumber());
assertEquals(4.5, original.getAverageGrade());
} }
@Test @Test
void shouldThrowExceptionWhenRecordBookNumberIsNull() { void testWithRecordBookNumber() {
assertThrows(IllegalArgumentException.class, () -> { Student original = new Student("A12", 4.5, 12345);
new StudentBuilder() Student updated = original.withRecordBookNumber(99999);
.setGroupNumber("101")
.setAverageGrade(4.5) assertNotSame(original, updated);
.setRecordBookNumber(null) assertEquals(99999, updated.getRecordBookNumber());
.build(); assertEquals("A12", updated.getGroupNumber());
}); assertEquals(4.5, updated.getAverageGrade());
assertEquals(12345, original.getRecordBookNumber());
} }
@Test @Test
void shouldThrowExceptionWhenRecordBookNumberIsBlank() { void testWithInvalidGroupNumber() {
assertThrows(IllegalArgumentException.class, () -> { Student original = new Student("A12", 4.5, 12345);
new StudentBuilder() assertThrows(IllegalArgumentException.class,
.setGroupNumber("101") () -> original.withGroupNumber("a12"));
.setAverageGrade(4.5) assertEquals("A12", original.getGroupNumber()); // не изменился
.setRecordBookNumber(" ")
.build();
});
} }
@Test @Test
void shouldReturnTrueWhenStudentsAreEqual() { void testWithInvalidAverageGrade() {
Student student1 = new StudentBuilder() Student original = new Student("A12", 4.5, 12345);
.setGroupNumber("101") assertThrows(IllegalArgumentException.class,
.setAverageGrade(4.5) () -> original.withAverageGrade(6.0));
.setRecordBookNumber("12345") assertEquals(4.5, original.getAverageGrade());
.build();
Student student2 = new StudentBuilder()
.setGroupNumber("101")
.setAverageGrade(4.5)
.setRecordBookNumber("12345")
.build();
assertEquals(student1, student2);
assertEquals(student1.hashCode(), student2.hashCode());
} }
@Test @Test
void shouldReturnFalseWhenStudentsAreDifferent() { void testWithInvalidRecordBookNumber() {
Student student1 = new StudentBuilder() Student original = new Student("A12", 4.5, 12345);
.setGroupNumber("101") assertThrows(IllegalArgumentException.class,
.setAverageGrade(4.5) () -> original.withRecordBookNumber(0));
.setRecordBookNumber("12345") assertEquals(12345, original.getRecordBookNumber());
.build(); }
Student student2 = new StudentBuilder() @Test
.setGroupNumber("102") void testEqualsAndHashCode() {
.setAverageGrade(4.5) Student s1 = new Student("A12", 4.5, 12345);
.setRecordBookNumber("12345") Student s2 = new Student("A12", 4.5, 12345);
.build(); Student s3 = new Student("B32", 4.5, 12345);
Student s4 = new Student("A12", 4.8, 12345);
Student s5 = new Student("A12", 4.5, 99999);
assertNotEquals(student1, student2); assertEquals(s1, s2);
assertEquals(s1.hashCode(), s2.hashCode());
assertNotEquals(s1, s3);
assertNotEquals(s1, s4);
assertNotEquals(s1, s5);
assertNotEquals(s1, null);
assertNotEquals(s1, "some string");
} }
} }