# Общее техническое задание: тестирование ## Задача Для всех реализованных классов написать автоматические тесты с использованием **JUnit**. ## Требования 1. Для каждого основного класса проекта должны быть написаны тесты. 2. Проверить: - корректное выполнение основных методов; - корректную обработку некорректных данных; - граничные случаи; - ожидаемые исключения. 3. Для `Student` проверить: - создание корректного объекта; - невозможность создания объекта с некорректными данными; - работу `Builder`; - `equals()` и `hashCode()`. 4. Для `MyLinkedList` проверить: - `add()`; - `get()`; - `set()`; - `remove()`; - `size()`; - `isEmpty()`; - некорректные индексы. 5. Для `MergeSortStrategy` проверить: - сортировку по каждому из трёх полей; - уже отсортированную коллекцию; - обратный порядок; - коллекцию из одного элемента; - пустую коллекцию. 6. Для каждого компаратора проверить правильное сравнение объектов `Student`. 7. Тесты должны быть независимыми друг от друга и воспроизводимыми. 8. Необходимо использовать JUnit и стандартные средства проверки результатов. ## Результат Тесты размещать отдельно от основного кода, например: ```text src/ ├── main/ │ └── java/ └── test/ └── java/ ├── StudentTest.java ├── MyLinkedListTest.java ├── MergeSortStrategyTest.java ├── StudentGroupComparatorTest.java ├── StudentAverageGradeComparatorTest.java └── StudentRecordBookComparatorTest.java ``` Все тесты должны успешно проходить перед слиянием ветки в `main`.