Files

68 lines
2.4 KiB
Markdown

# Общее техническое задание: тестирование
## Задача
Для всех реализованных классов написать автоматические тесты с использованием **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`.