JUnit — написание примеров тестовых случаев для StudentService на Java
Во многих частях проектов коллекции играют главную роль. Среди них ArrayList — удобная для пользователя коллекция, которая много раз потребуется для разработки программного обеспечения. Возьмем пример проекта, который включает модель «Студент», которая содержит такие атрибуты, как studentId, studentName, CourseName и GPA. Давайте добавим несколько сервисов, таких как добавление/вставка/фильтрация по курсу/фильтрация по gpa/удаление, и в любой момент времени доступные данные должны быть проверены JUnit.
Пример проекта
Структура проекта:
Это проект maven. Следовательно, все зависимости должны быть указаны в
пом.xml
XML
<?xml version="1.0" encoding="UTF-8"?> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 <modelVersion>4.0.0</modelVersion> <groupId>com.gfg.StudentServicesJava</groupId> <artifactId>StudentServicesJava</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <junit.version>5.3.1</junit.version> <pitest.version>1.4.3</pitest.version> </properties> <dependencies> <!-- junit 5, unit test --> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> </dependencies> <build> <finalName>maven-mutation-testing</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.0.0-M1</version> </plugin> <plugin> <groupId>org.pitest</groupId> <artifactId>pitest-maven</artifactId> <version>${pitest.version}</version> <executions> <execution> <id>pit-report</id> <phase>test</phase> <goals> <goal>mutationCoverage</goal> </goals> </execution> </executions> <!-- Need this to support JUnit 5 --> <dependencies> <dependency> <groupId>org.pitest</groupId> <artifactId>pitest-junit5-plugin</artifactId> <version>0.8</version> </dependency> </dependencies> <configuration> <targetClasses> <param>com.gfg.StudentServicesJava.*StudentServicesJava*</param> </targetClasses> <targetTests> <param>com.gfg.StudentServicesJava.*</param> </targetTests> </configuration> </plugin> </plugins> </build> </project> |
Давайте начнем с класса «Студент» сейчас
Студент.java
Java
public class Student { public Student(String studentName, int studentId, String courseName, double gpa) { super(); this.studentName = studentName; this.studentId = studentId; this.courseName = courseName; this.gpa = gpa; } public Student() { // via setter methods, rest fields are done } String studentName; int studentId; String courseName; double gpa; public String getStudentName() { return studentName; } public void setStudentName(String studentName) { this.studentName = studentName; } public int getStudentId() { return studentId; } public void setStudentId(int studentId) { this.studentId = studentId; } public String getCourseName() { return courseName; } public void setCourseName(String courseName) { this.courseName = courseName; } public double getGpa() { return gpa; } public void setGpa(double gpa) { this.gpa = gpa; }} |
StudentServicesJava.java
Это в основном файл бизнес-логики. Об этом позаботятся следующие операции по обслуживанию студентов.
- Добавление студентов в список и возврат размера списка студентов
- Вставка учеников в середину списка и возврат размера списка учеников
- Удаление студентов из списка и возврат размера списка студентов
- Получение имени студента с помощью позиции индекса
- Получение списка студентов по курсу
- Получение списка учащихся gpawise
Java
import java.util.ArrayList;import java.util.List; public class StudentServicesJava { // Appending i.e. adding students at the end of the // list and returning the studentlist size public int appendStudent(Student student,List<Student> studentList) { studentList.add(student); return studentList.size(); } // Inserting i.e. inserting students at the middle // of the list and returning the studentlist size public int insertStudent(Student student,List<Student> studentList,int index) { studentList.add(index,student); return studentList.size(); } // Removing students from the list and // returning the studentlist size public int removeStudent(List<Student> studentList,int index) { studentList.remove(index); return studentList.size(); } // Returning the studentlist size public int getStudents(List<Student> studentList) { return studentList.size(); } // Retrieving the student name at the specified index public String getStudentName(List<Student> studentList,int index) { return studentList.get(index).getStudentName(); } // Returning the student list who matches for a specific course public List<Student> getStudentsByCourseWise(List<Student> studentList,String courseName) { List<Student> courseWiseStudents = new ArrayList<Student>(); for (int i = 0; i < studentList.size(); i++) { if (studentList.get(i).getCourseName().equalsIgnoreCase(courseName)) { courseWiseStudents.add(studentList.get(i)); } } return courseWiseStudents; } // Returning the student list who matches for a specific gpa and more public List<Student> getStudentsByGPA(List<Student> studentList,double gpa) { List<Student> gpaWiseStudents = new ArrayList<Student>(); for (int i = 0; i < studentList.size(); i++) { if (studentList.get(i).getGpa() >= gpa) { gpaWiseStudents.add(studentList.get(i)); } } return gpaWiseStudents; } } |
Всегда нужно проверять качество программного обеспечения с помощью тестирования JUNIT.
TestStudentServicesJava.java
Java
import static org.junit.jupiter.api.Assertions.assertEquals; import java.util.ArrayList;import java.util.List; import org.junit.jupiter.api.DisplayName;import org.junit.jupiter.api.Test; public class TestStudentServicesJava { List<Student> studentList = new ArrayList<Student>(); StudentServicesJava studentServicesJavaObject = new StudentServicesJava(); @DisplayName("Test check for adding/inserting/filtering by coursewise or gpawise/removing students ") @Test public void testCheckForAdditionAndDeletion() { assertEquals(true, studentServicesJavaObject.getStudents(studentList) == 0); // creating a student object Student student = new Student(); student.setStudentId(1); student.setStudentName("Rachel"); student.setCourseName("Java"); student.setGpa(9.2); studentServicesJavaObject.appendStudent(student, studentList); // After appending the data assertEquals(true, studentServicesJavaObject.getStudents(studentList) == 1); Student monica = new Student("Monica", 2, "Java", 8.5); studentServicesJavaObject.insertStudent(monica, studentList, 0); // After inserting the data assertEquals(true, studentServicesJavaObject.getStudentName(studentList,0).equalsIgnoreCase("Monica")); assertEquals(true, studentServicesJavaObject.getStudents(studentList) == 2); Student phoebe = new Student("Phoebe", 3, "Python", 8.5); studentServicesJavaObject.appendStudent(phoebe, studentList); assertEquals(true, studentServicesJavaObject.getStudents(studentList) == 3); assertEquals(true, studentServicesJavaObject.getStudentName(studentList,1).equalsIgnoreCase("Rachel")); assertEquals(true, studentServicesJavaObject.getStudents(studentList) == studentList.size()); // checking according to coursewise, first check for java List<Student> javaCourseWiseStudentList = new ArrayList<Student>(); javaCourseWiseStudentList = studentServicesJavaObject.getStudentsByCourseWise(studentList, "java"); // As for java, only 2 students are entered and checking like below assertEquals(true, studentServicesJavaObject.getStudents(javaCourseWiseStudentList) == 2); assertEquals(true, studentServicesJavaObject.getStudentName(javaCourseWiseStudentList,1).equalsIgnoreCase("Rachel")); List<Student> pythonCourseWiseStudentList = new ArrayList<Student>(); pythonCourseWiseStudentList = studentServicesJavaObject.getStudentsByCourseWise(studentList, "python"); // As for python, only 1 student is entered and checking like below assertEquals(true, studentServicesJavaObject.getStudents(pythonCourseWiseStudentList) == 1); assertEquals(true, studentServicesJavaObject.getStudentName(pythonCourseWiseStudentList,0).equalsIgnoreCase("phoebe")); // php course check List<Student> phpCourseWiseStudentList = new ArrayList<Student>(); phpCourseWiseStudentList = studentServicesJavaObject.getStudentsByCourseWise(studentList, "unknown"); // As for php, no stuents are there, we need to check like below assertEquals(true, studentServicesJavaObject.getStudents(phpCourseWiseStudentList) == 0); // Now with gpa check List<Student> gpaWiseStudentList = new ArrayList<Student>();РЕКОМЕНДУЕМЫЕ СТАТЬИ |