Метод testing.T.Failed

Метод testing.T.Failed позволяет проверить, был ли текущий тест помечен как провалившийся. Он возвращает true, если тест провалился, и false в противном случае. Метод не принимает никаких параметров и полезен для условной логики в тестах, например, для пропуска дальнейших проверок при обнаружении ошибки.

Синтаксис

got.Failed()

Пример использования с проверкой статуса

В этом примере мы проверяем, был ли тест помечен как провалившийся после вызова t.Fail:

gopackage main

import (
  "testing"
)

func TestExample(t *testing.T) {
  t.Fail()
  if t.Failed() {
    t.Log("Тест помечен как провалившийся")
  }
}

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

go"Тест помечен как провалившийся"

Пример с условной логикой

Метод Failed полезен для выполнения действий только в случае провала теста. Например, для вывода дополнительной диагностики:

gopackage main

import (
  "testing"
)

func TestCalculation(t *testing.T) {
  result := 10
  expected := 20

  if result != expected {
    t.Errorf("Ожидалось %d, получено %d", expected, result)
  }

  if t.Failed() {
    t.Log("Тест провален, выполняем дополнительные проверки")
  }
}

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

go"Тест провален, выполняем дополнительные проверки"

Пример с пропуском дальнейших проверок

Метод Failed можно использовать для пропуска выполнения остальных проверок, если тест уже провалился:

gopackage main

import (
  "testing"
)

func TestMultipleChecks(t *testing.T) {
  t.Run("Первая проверка", func(t *testing.T) {
    if 1 != 2 {
      t.Fail()
    }
  })

  if t.Failed() {
    t.Skip("Пропускаем остальные проверки из-за провала")
  }

  t.Run("Вторая проверка", func(t *testing.T) {
    if 3 != 3 {
      t.Fail()
    }
  })
}

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

go"Пропускаем остальные проверки из-за провала"

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

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