Treci la conținutul principal

Ce este un test unitar

Un test unitar este un mic program care verifică o singură bucată din codul tău — de obicei o singură funcție. Rulezi testele după fiecare modificare; dacă o modificare strică ceva, un test îți spune imediat, înainte să afle utilizatorii tăi.

Go îți oferă din start tot ce ai nevoie: pachetul testing și comanda go test fac parte din uneltele limbajului. Nicio bibliotecă suplimentară de instalat, nicio configurare — doar un fișier alături de codul tău.

Testele fac și modificările sigure: cu teste bune poți rescrie o funcție și afli în câteva secunde dacă se comportă în continuare la fel.


Fișiere de test și funcții de test

Două reguli de denumire fac dintr-un test un test:

1. Numele fișierului se termină în _test.go — pentru calc.go scrii calc_test.go. Astfel de fișiere sunt compilate doar de go test, niciodată în build-ul tău obișnuit.
2. Funcția se numește TestXxx — începe cu Test, urmează o literă mare și primește un singur argument: t *testing.T.

În interiorul testului apelezi funcția, compari ce ai obținut (got) cu ce te aștepți (want) și raportezi o eșuare prin t atunci când diferă. Dacă nu se raportează nicio eșuare, testul trece.

Un prim test care trece

TestAdd apelează Add(2, 3) și compară rezultatul cu 5. Se potrivesc, așa că nu se raportează nimic și testul trece: go test afișează PASS.

Prompt
Scrie un fișier de test Go cu o funcție Add care adună două valori int și o funcție TestAdd care verifică dacă Add(2, 3) este egal cu 5, folosind t.Errorf cu un mesaj got/want atunci când nu este. Arată ieșirea go test -v a rulării care trece.
Ieșire: program Go și rezultatul capturat
A first passing test

Un test care eșuează

Acest Add are o eroare — înmulțește. Testul o prinde: t.Errorf afișează mesajul cu valorile got și want, iar rularea se încheie cu FAIL.

Prompt
Scrie un fișier de test Go în care funcția Add are o eroare (înmulțește în loc să adune) și o funcție TestAdd care se așteaptă ca Add(2, 3) să fie 5. Arată ieșirea go test -v a rulării care eșuează, împreună cu mesajul de eroare.
Ieșire: program Go și rezultatul capturat

Rularea testelor

go test rulează toate testele din folderul curent. Este tăcut când totul merge bine — o singură linie ok — și vorbește doar când ceva eșuează.

go test -v (verbose) listează fiecare test după nume, cu linii === RUN și --- PASS. Folosește-l ca să vezi ce a rulat de fapt. Pentru un proiect întreg, go test ./... rulează testele din fiecare folder.

Două teste, ieșire detaliată

Fișierul are două funcții de test, câte una pentru fiecare funcție testată. Cu -v, fiecare apare separat în ieșire — poți vedea că ambele au rulat și ambele au trecut.

Prompt
Scrie un fișier de test Go cu două funcții mici, Double și Half, și câte o funcție de test pentru fiecare. Arată ieșirea go test -v în care ambele teste apar cu numele lor și trec.
Ieșire: program Go și rezultatul capturat