Выбор ответа Junior Тесты, бенчмарки и модули обновлено
t.Errorf и t.Fatalf
Вопрос
Чем t.Errorf отличается от t.Fatalf?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Errorf проваливает и продолжает тест, Fatalf сразу его останавливает. Errorf = Logf + Fail, тест продолжается, и можно увидеть все расхождения сразу.
Варианты ответа
- Errorf проваливает и продолжает тест, Fatalf сразу его останавливаетправильный ответ
- Errorf пишет предупреждение в лог теста, а сам тест при этом не падает
- Fatalf останавливает текущий и все остальные тесты пакета
- Fatalf завершает весь процесс тестов через os.Exit(1)
Разбор
Errorf = Logf + Fail, тест продолжается, и можно увидеть все расхождения сразу. Fatalf = Logf + FailNow, вызывает runtime.Goexit и останавливает только текущий тест или подтест, другие тесты пакета продолжат. os.Exit не вызывается. Важно: FailNow нужно вызывать из горутины теста, а не из запущенной им горутины.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Тесты, бенчмарки и модули»
- Minimal version selection как в Go modules
- Упрощённый go mod tidy: лишние и недостающие модули
- Сортировка версий по Semantic Versioning на Go
- Что выведет Go: табличный прогон без testing
- testing.B.Loop в Go 1.24
- Fuzzing в Go
- Зачем go.sum
- httptest в тестах