Метод testing.T.FailNow
Метод testing.T.FailNow немедленно останавливает выполнение текущей тестовой функции,
помечая тест как проваленный. В отличие от метода testing.T.Fail, который только
устанавливает флаг ошибки, но продолжает выполнение, testing.T.FailNow прерывает
исполнение теста прямо в точке вызова. Метод не принимает никаких параметров и не возвращает
значений.
Синтаксис
t.FailNow()
Пример
Давайте проверим работу метода testing.T.FailNow в простом тесте:
package main
import (
"fmt"
"testing"
)
func TestExample(t *testing.T) {
fmt.Println("Начало теста")
if 1+1 != 3 {
t.FailNow()
}
fmt.Println("Этот код не выполнится")
}
Результат выполнения теста:
"Начало теста"
"--- FAIL: TestExample (0.00s)"
Пример
Давайте сравним поведение testing.T.Fail и testing.T.FailNow в одном тесте:
package main
import (
"fmt"
"testing"
)
func TestComparison(t *testing.T) {
t.Fail()
fmt.Println("Этот код выполнится")
t.FailNow()
fmt.Println("Этот код не выполнится")
}
Результат выполнения теста:
"Этот код выполнится"
"--- FAIL: TestComparison (0.00s)"
Пример
Давайте используем testing.T.FailNow для остановки теста при обнаружении критической ошибки:
package main
import (
"fmt"
"testing"
)
func divide(a, b int) int {
if b == 0 {
return 0
}
return a / b
}
func TestDivide(t *testing.T) {
res := divide(10, 0)
if res == 0 {
t.FailNow()
}
fmt.Printf("Результат деления: %d", res)
}
Результат выполнения теста:
"--- FAIL: TestDivide (0.00s)"
Смотрите также
-
метод
testing.T.Fail,
который только помечает тест как проваленный без остановки -
метод
testing.T.Fatal,
который останавливает выполнение с выводом сообщения об ошибке -
метод
testing.T.Failed,
который возвращает статус провала теста -
метод
testing.T.SkipNow,
который останавливает выполнение теста без отметки об ошибке