testing.T.Skip în Go

Sare peste testul curent, cu un motiv; testul este raportat ca SKIP, nu ca eșuat.

Sintaxă
func (c *T) Skip(args ...any)
func (c *T) Skipf(format string, args ...any)

Ce face testing.T.Skip

t.Skip scrie motivul și oprește testul (ca t.Fatal), dar îl marchează ca sărit (--- SKIP), nu ca eșuat. Îl folosești pentru teste care nu pot rula în orice mediu: au nevoie de o bază de date, de rețea, de un anumit sistem de operare sau durează mult.

Combinat cu testing.Short(), permite go test -short pentru o rulare rapidă care sare testele lente. Testele sărite sunt afișate doar cu -v.

Parametri

Parametru Descriere
args / format Motivul, afișat în rezultat.

Ce returnează

Nu se întoarce: testul se oprește.

Exemple

Exemplul 1: Test care are nevoie de o bază de date

// fișierul db_test.go
package magazin

import (
    "os"
    "testing"
)

func TestSalvareComanda(t *testing.T) {
    dsn := os.Getenv("TEST_DB")
    if dsn == "" {
        t.Skip("setează TEST_DB ca să rulezi testele cu baza de date")
    }
    t.Log("conectare la", dsn)
}

func TestCalculTotal(t *testing.T) {
    if 2*49.5 != 99 {
        t.Error("total greșit")
    }
}

Rezultatul în terminal (timpii diferă la fiecare rulare)

$ go test -v
=== RUN   TestSalvareComanda
    db_test.go:11: setează TEST_DB ca să rulezi testele cu baza de date
--- SKIP: TestSalvareComanda (0.00s)
=== RUN   TestCalculTotal
--- PASS: TestCalculTotal (0.00s)
PASS
ok  	magazin	0.307s

Exemplul 2: Teste lente sărite cu -short

// fișierul import_test.go
package magazin

import (
    "testing"
    "time"
)

func TestImportComplet(t *testing.T) {
    if testing.Short() {
        t.Skip("test lent, sărit în modul -short")
    }
    time.Sleep(2 * time.Second) // simulăm importul a 100 000 de produse
}

Rezultatul în terminal (timpii diferă la fiecare rulare)

$ go test -v -short
=== RUN   TestImportComplet
    import_test.go:10: test lent, sărit în modul -short
--- SKIP: TestImportComplet (0.00s)
PASS
ok  	magazin	0.292s

Greșeli frecvente

  • Sari peste teste care eșuează „ca să treacă build-ul”. Un test sărit nu mai verifică nimic; repară-l sau șterge-l.

Comenzi înrudite

  • testing.T: Tipul primit de fiecare funcție de test; prin el raportezi erori, scrii mesaje și controlezi testul.
  • testing.T.Fatal: Marchează testul ca eșuat, scrie mesajul și oprește imediat testul curent; celelalte teste continuă.
  • testing.T.Parallel: Anunță că testul poate rula în paralel cu alte teste paralele, ca suita să se termine mai repede.