Выбор ответа Middle Тестирование: JUnit 5 и Mockito обновлено
Состояние в полях тестового класса
Вопрос
В тестовом классе JUnit 5 есть поле List<String> log = new ArrayList<>(). Тест A добавляет элемент, тест B проверяет, что список пуст. Пройдёт ли B?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Да: JUnit по умолчанию создаёт новый экземпляр на каждый тест. Режим по умолчанию Lifecycle.PERMETHOD: каждый тест получает свежий экземпляр, поэтому поля не делятся.
Варианты ответа
- Нет: поле общее для всех тестов класса и хранит запись A
- Зависит от порядка выполнения, который JUnit не гарантирует
- Да: JUnit по умолчанию создаёт новый экземпляр на каждый тестправильный ответ
- Нет, если тесты идут в одном потоке и экземпляр переиспользуется
Разбор
Режим по умолчанию Lifecycle.PER_METHOD: каждый тест получает свежий экземпляр, поэтому поля не делятся. Общий экземпляр будет только с @TestInstance(Lifecycle.PER_CLASS). Общим может стать только static-поле, тогда и появится зависимость от порядка.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.