Модульное тестирование класса Student на Java

JavaJavaBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом проекте вы научитесь писать юнит-тесты для простого класса Student с использованием фреймворка тестирования JUnit. Проект включает в себя настройку тестовой среды, написание тестовых случаев для методов get и set класса Student и проверку правильности реализации.

🎯 Задачи

В этом проекте вы научитесь:

  • Как импортировать зависимость JUnit в проект
  • Как настроить класс StudentTest и инициализировать объект Student для тестирования
  • Как писать тестовые случаи для методов get класса Student
  • Как писать тестовые случаи для методов set класса Student

🏆 Достижения

После завершения этого проекта вы сможете:

  • Настроить тестовую среду с использованием Maven и JUnit
  • Писать эффективные юнит-тесты для класса на Java
  • Проверить правильность реализации с использованием тестовых случаев
  • Применять лучшие практики для написания поддерживаемого и надежного кода

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java(("Java")) -.-> java/SystemandDataProcessingGroup(["System and Data Processing"]) java/ObjectOrientedandAdvancedConceptsGroup -.-> java/classes_objects("Classes/Objects") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/class_methods("Class Methods") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/constructors("Constructors") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/packages_api("Packages / API") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/encapsulation("Encapsulation") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/annotation("Annotation") java/SystemandDataProcessingGroup -.-> java/object_methods("Object Methods") subgraph Lab Skills java/classes_objects -.-> lab-300402{{"Модульное тестирование класса Student на Java"}} java/class_methods -.-> lab-300402{{"Модульное тестирование класса Student на Java"}} java/constructors -.-> lab-300402{{"Модульное тестирование класса Student на Java"}} java/packages_api -.-> lab-300402{{"Модульное тестирование класса Student на Java"}} java/encapsulation -.-> lab-300402{{"Модульное тестирование класса Student на Java"}} java/annotation -.-> lab-300402{{"Модульное тестирование класса Student на Java"}} java/object_methods -.-> lab-300402{{"Модульное тестирование класса Student на Java"}} end

Импортировать зависимость JUnit

В этом шаге вы научитесь импортировать зависимость JUnit в проект.

  1. Откройте файл pom.xml, расположенный в директории ~/project/StudentClass.
  2. Добавьте следующую зависимость внутри раздела <dependencies>:
<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.11</version>
  <scope>test</scope>
</dependency>

Это добавит зависимость JUnit 4 в проект, которая необходима для написания и запуска юнит-тестов.

✨ Проверить решение и практиковаться

Настроить класс тестирования Student

В этом шаге вы научитесь настраивать класс StudentTest и инициализировать объект Student для тестирования.

  1. Откройте файл StudentTest.java, расположенный в директории ~/project/StudentClass/src/test/java/com/labex.
  2. Добавьте следующий метод, аннотированный @Before, в класс StudentTest:
private Student studentTest;

@Before
public void setUp() {
    studentTest = new Student("Tom", "male", 25);
}

Этот метод setUp() будет выполняться перед каждым тестовым методом, и он создаст новый объект Student с заданным именем, полом и возрастом.

✨ Проверить решение и практиковаться

Написать тесты для методов get и set

В этом шаге вы напишете тесты для проверки методов get и set класса Student.

  1. Добавьте следующие тестовые методы в класс StudentTest:
@Test
public void testGetName() {
    assertEquals("Tom", studentTest.getName());
}

@Test
public void testGetAge() {
    assertEquals(25, studentTest.getAge());
}

@Test
public void testGetSex() {
    assertEquals("male", studentTest.getSex());
}

Эти тесты убедят вас, что методы getName(), getAge() и getSex() класса Student работают правильно.

  1. Добавьте следующие тестовые методы в класс StudentTest:
@Test
public void testSetName() {
    studentTest.setName("Jimmy");
    assertEquals("Jimmy", studentTest.getName());
}

@Test
public void testSetAge() {
    studentTest.setAge(26);
    assertEquals(25, studentTest.getAge()); // Возраст должен остаться неизменным
}

@Test
public void testSetSex() {
    studentTest.setSex("female");
    assertEquals("female", studentTest.getSex());
}

Эти тесты убедят вас, что методы setName(), setAge() и setSex() класса Student работают правильно.

✨ Проверить решение и практиковаться

Запустить тестовый случай

Для запуска тестового случая следуйте шагам ниже:

  1. В терминале перейдите в директорию проекта StudentClass с помощью следующей команды:
cd ~/project/StudentClass/
  1. Запустите следующую команду для выполнения тестового случая:
mvn test

Вывод должен быть похож на следующий:

[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running com.labex.StudentTest
[INFO] Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.099 s - in com.labex.StudentTest
[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 6, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  4.237 s
[INFO] Finished at: 2024-05-12T12:23:30Z
[INFO] ------------------------------------------------------------------------

Эти тесты гарантируют, что методы класса Student, такие как getName, getAge, getSex, setName, setAge и setSex, функционируют правильно, проверяя их ожидаемое поведение с помощью утверждений.

✨ Проверить решение и практиковаться

Резюме

Поздравляем! Вы завершили этот проект. Вы можете практиковаться в более многих лабораторных работах в LabEx, чтобы улучшить свои навыки.