Метод testing.T.Deadline

Метод testing.T.Deadline возвращает время (time.Time), когда текущий тест должен быть завершен. Если тест выполняется дольше указанного времени, Go завершит его принудительно. Метод возвращает два значения: время завершения и булево значение, указывающее, установлен ли дедлайн для теста. Если дедлайн не установлен, второе значение будет false.

Синтаксис

got.Deadline()

Пример

Давайте проверим, установлен ли дедлайн для теста:

gopackage main

import (
  "fmt"
  "testing"
  "time"
)

func TestDeadline(t *testing.T) {
  deadline, ok := t.Deadline()
  if ok {
    fmt.Printf("deadline: %v\n", deadline)
  } else {
    fmt.Println("deadline not set")
  }
}

Результат выполнения кода (если тест запущен с флагом -timeout):

go"deadline: 2026-09-04 15:30:00 +0000 UTC"

Пример

Давайте вычислим оставшееся время до завершения теста:

gopackage main

import (
  "fmt"
  "testing"
  "time"
)

func TestRemainingTime(t *testing.T) {
  deadline, ok := t.Deadline()
  if ok {
    remaining := time.Until(deadline)
    fmt.Printf("remaining time: %v\n", remaining)
  } else {
    fmt.Println("deadline not set")
  }
}

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

go"remaining time: 5m0s"

Пример

Давайте используем дедлайн для прерывания долгой операции:

gopackage main

import (
  "fmt"
  "testing"
  "time"
)

func TestLongOperation(t *testing.T) {
  deadline, ok := t.Deadline()
  if !ok {
    t.Skip("deadline not set, skipping test")
  }

  remaining := time.Until(deadline)
  if remaining < time.Second {
    t.Skip("not enough time to complete the test")
  }

  time.Sleep(500 * time.Millisecond)
  fmt.Println("operation completed successfully")
}

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

go"operation completed successfully"

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

  • метод testing.T.FailNow,
    который немедленно завершает выполнение теста
  • метод testing.T.Skip,
    который пропускает текущий тест
  • метод testing.T.Parallel,
    который позволяет запускать тесты параллельно
  • метод testing.T.Cleanup,
    который регистрирует функцию для выполнения после завершения теста