Метод testing.T.Errorf
Метод T.Errorf выполняет форматирование строки с использованием стандартных правил пакета fmt и записывает результат в журнал теста. После вызова этого метода тест помечается как неудачный, но выполнение продолжается. В отличие от T.Fatalf, метод T.Errorf не останавливает выполнение текущей функции теста. Первым параметром метод принимает строку формата, а последующими - значения для подстановки в формат.
Синтаксис
t.Errorf(format string, args ...interface{})
Пример
Давайте проверим функцию, которая возвращает сумму двух чисел. При несовпадении ожидаемого значения используем T.Errorf:
package main
import "testing"
func TestSum(t *testing.T) {
res := sum(2, 3)
expected := 5
if res != expected {
t.Errorf("sum(2, 3) = %d; want %d", res, expected)
}
}
Пример
Если необходимо выполнить несколько проверок в одном тесте, T.Errorf позволяет продолжить тестирование после обнаружения ошибки. Рассмотрим пример:
package main
import (
"testing"
)
func TestMultipleChecks(t *testing.T) {
vals := []int{1, 2, 3, 4, 5}
for i, v := range vals {
if v%2 == 0 {
t.Errorf("value at index %d is even: %d", i, v)
}
}
}
Пример
Метод T.Errorf поддерживает все форматы вывода пакета fmt. Посмотрим на использование разных спецификаторов:
package main
import "testing"
func TestFormatting(t *testing.T) {
name := "Alice"
age := 30
score := 95.5
t.Errorf("name: %s, age: %d, score: %.1f", name, age, score)
}
Пример
Рассмотрим ситуацию, когда T.Errorf используется внутри вспомогательной функции для логирования ошибок:
package main
import "testing"
func checkValue(t *testing.T, value int, expected int) {
if value != expected {
t.Errorf("checkValue: got %d, want %d", value, expected)
}
}
func TestWithHelper(t *testing.T) {
checkValue(t, 10, 10)
checkValue(t, 20, 20)
checkValue(t, 30, 25)
}
Смотрите также
-
метод
testing.T.Logf,
который выполняет форматированное логирование без пометки теста как неудачного -
метод
testing.T.Fatalf,
который останавливает выполнение теста после логирования ошибки -
метод
testing.T.Error,
который выполняет логирование без форматирования и помечает тест как неудачный -
метод
testing.T.Log,
который выполняет простое логирование без форматирования