РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
952 of 1593 menu

Метод T.Error

Метод Error типа *testing.T предназначен для логирования сообщений об ошибках в тестах. Он принимает аргументы, аналогичные fmt.Print, и помечает текущий тест как проваленный, но при этом не прерывает его выполнение. В отличие от Fatal, который останавливает выполнение теста, Error позволяет выполнить оставшиеся проверки, что удобно для сбора всех ошибок за один запуск.

Синтаксис

t.Error(args ...interface{})

Метод принимает произвольное количество аргументов любого типа и форматирует их аналогично fmt.Print. Для форматированного вывода используйте метод Errorf.

Пример 1

Рассмотрим простой тест, который проверяет функцию сложения. Если результат не совпадает с ожидаемым, мы логируем ошибку с помощью Error:

package main import ( "testing" ) func TestAdd(t *testing.T) { result := 2 + 2 expected := 5 if result != expected { t.Error("Add returned", result, "expected", expected) } }

Результат выполнения теста:

--- FAIL: TestAdd (0.00s) main_test.go:10: Add returned 4 expected 5

Пример 2

В этом примере показано, как Error не останавливает выполнение теста. Мы проверяем несколько условий, и даже если первое не выполняется, тест продолжает работу:

package main import ( "testing" ) func TestMultipleChecks(t *testing.T) { values := []int{1, 2, 3, 4, 5} for i, v := range values { if v%2 == 0 { t.Error("Even value found at index", i, ":", v) } } }

Результат выполнения теста:

--- FAIL: TestMultipleChecks (0.00s) main_test.go:9: Even value found at index 1 : 2 main_test.go:9: Even value found at index 3 : 4

Пример 3

Использование Error вместе с выводом дополнительной информации о состоянии теста. Это помогает быстрее понять причину ошибки:

package main import ( "strings" "testing" ) func TestContains(t *testing.T) { str := "hello world" sub := "world" if !strings.Contains(str, sub) { t.Error("String", str, "does not contain", sub) } sub = "golang" if strings.Contains(str, sub) { t.Error("String", str, "unexpectedly contains", sub) } }

Результат выполнения теста:

--- FAIL: TestContains (0.00s) main_test.go:12: String hello world unexpectedly contains golang

Смотрите также

  • метод T.Errorf,
    который логирует форматированное сообщение об ошибке
  • метод T.Fatal,
    который останавливает выполнение теста после логирования ошибки
  • метод T.Log,
    который выводит информационное сообщение без пометки теста как проваленного
  • метод T.Fail,
    который просто помечает тест как проваленный без вывода сообщения
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить