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

Функция TestXxx

Функция TestXxx представляет собой тестовую функцию в пакете testing. Она должна начинаться с префикса Test и принимать единственный параметр типа *testing.T. Первым параметром функция принимает указатель на структуру T, которая предоставляет методы для управления ходом выполнения теста и вывода ошибок.

Синтаксис

func TestXxx(t *testing.T) { // код теста }

Имя тестовой функции должно начинаться с Test, за которым следует любая строка, начинающаяся с заглавной буквы. Например, TestSum, TestDivision или TestIsValid.

Пример простого теста

Давайте напишем тест для функции, которая складывает два числа:

package main import ( "testing" ) func Add(a, b int) int { return a + b } func TestAdd(t *testing.T) { res := Add(2, 3) if res != 5 { t.Errorf("Add(2, 3) = %d; want 5", res) } }

Результат выполнения команды go test:

"PASS"

Если тест проваливается, мы увидим сообщение об ошибке, переданное через t.Errorf.

Пример с несколькими тестами

Используя t.Run, можно запускать подтесты в одной функции:

package main import ( "testing" ) func IsEven(x int) bool { return x%2 == 0 } func TestIsEven(t *testing.T) { tests := []struct { name string arg int want bool }{ {"even number", 4, true}, {"odd number", 5, false}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { res := IsEven(tt.arg) if res != tt.want { t.Errorf("IsEven(%d) = %v; want %v", tt.arg, res, tt.want) } }) } }

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

"PASS"

Такой подход позволяет выполнять каждый подтест независимо и видеть, какой именно из них провалился.

Пример с использованием t.Log

Для отладки теста можно использовать t.Log и t.Logf, чтобы выводить дополнительную информацию:

package main import ( "testing" ) func Max(a, b int) int { if a > b { return a } return b } func TestMax(t *testing.T) { res := Max(10, 20) t.Logf("Max(10, 20) = %d", res) if res != 20 { t.Errorf("Max(10, 20) = %d; want 20", res) } }

Результат выполнения команды go test -v:

"=== RUN TestMax\n TestMax: testing_test.go:12: Max(10, 20) = 20\n--- PASS: TestMax (0.00s)\nPASS"

Флаг -v выводит всё, что передано в t.Log, что помогает отслеживать промежуточные результаты выполнения теста.

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

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