Метод testing.T.Fatal

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

Синтаксис

got.Fatal(args ...interface{})

Пример

Давайте остановим выполнение теста при отрицательном значении:

gopackage main

import "testing"

func TestPositiveValue(t *testing.T) {
  x := 42
  if x < 0 {
    t.Fatal("value must be positive")
  }
  // код продолжается, если проверка пройдена
}

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

goPASS

Пример

Используем Fatal для проверки возвращаемой ошибки:

gopackage main

import (
  "testing"
)

func TestProcess(t *testing.T) {
  err := processData()
  if err != nil {
    t.Fatal("processing failed:", err)
  }
  // тест продолжается при успешной обработке
}

Результат выполнения теста при наличии ошибки:

go"processing failed: some error"

Пример

Продемонстрируем остановку теста при обнаружении некорректных данных:

gopackage main

import (
  "testing"
)

func TestValidateUser(t *testing.T) {
  user := getUser()
  if user == nil {
    t.Fatal("user must not be nil")
  }
  if user.Age < 18 {
    t.Fatal("user age must be at least 18")
  }
}

Результат выполнения теста при user.Age = 16:

go"user age must be at least 18"

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

  • метод testing.T.Fatalf,
    который останавливает тест с форматированным сообщением
  • метод testing.T.Error,
    который сообщает об ошибке, но не останавливает выполнение
  • метод testing.T.FailNow,
    который помечает тест как проваленный и немедленно останавливает
  • метод testing.T.Log,
    который выводит сообщение без остановки теста