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

Метод testing.T.Run

Метод T.Run выполняет функцию теста как субтест (подтест) с указанным именем. Он принимает два параметра: имя субтеста (тип string) и функцию, которая получает указатель на T для выполнения проверок внутри субтеста. Метод возвращает bool, указывающее, завершился ли субтест успешно (true) или с ошибкой (false).

Синтаксис

func (t *T) Run(name string, f func(t *T)) bool

Пример

Создадим субтест с именем "subtest1" внутри основного теста:

package main import ( "testing" ) func TestMain(t *testing.T) { t.Run("subtest1", func(t *testing.T) { // Проверка внутри субтеста if 2+2 != 4 { t.Error("2+2 должно быть 4") } }) }

Пример

Метод T.Run позволяет выполнять несколько субтестов последовательно. Результат каждого субтеста возвращается отдельно:

package main import ( "fmt" "testing" ) func TestMain(t *testing.T) { res1 := t.Run("subtest1", func(t *testing.T) { if 3*3 != 9 { t.Error("3*3 должно быть 9") } }) res2 := t.Run("subtest2", func(t *testing.T) { if 4+4 != 8 { t.Error("4+4 должно быть 8") } }) fmt.Println("subtest1 результат:", res1) fmt.Println("subtest2 результат:", res2) }

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

"subtest1 результат: true" "subtest2 результат: true"

Пример

Субтесты могут быть вложенными — внутри одного субтеста можно запускать другие субтесты:

package main import ( "testing" ) func TestMain(t *testing.T) { t.Run("group", func(t *testing.T) { t.Run("subtest1", func(t *testing.T) { if 1+1 == 2 { // проверка пройдена } }) t.Run("subtest2", func(t *testing.T) { if 2*3 == 6 { // проверка пройдена } }) }) }

Пример

С помощью T.Run удобно запускать параллельные тесты вместе с T.Parallel:

package main import ( "testing" ) func TestMain(t *testing.T) { t.Run("parallel1", func(t *testing.T) { t.Parallel() if 5*5 != 25 { t.Error("5*5 должно быть 25") } }) t.Run("parallel2", func(t *testing.T) { t.Parallel() if 10/2 != 5 { t.Error("10/2 должно быть 5") } }) }

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

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