Kako napisati jedinični test u Golangu?

Kako Napisati Jedinicni Test U Golangu



Ako ste Go programer, znate koliko je testiranje važno za osiguranje kvalitete vašeg koda. Pisanje jedinični testovi bitan je dio razvojnog procesa i može vam pomoći da rano otkrijete greške, štedeći vam vrijeme i novac na duge staze. U ovom ćemo članku raspravljati o tome kako pisati jedinični testovi u Golangu.

Što je testiranje jedinica?

Prvi korak je shvatiti što jedinično testiranje sredstva. Jedinično testiranje odnosi se na proces testiranja malih kodnih jedinica ili modula kako bi se osiguralo da svaki od njih funkcionira prema očekivanjima. Jedinično testiranje koristi se za uklanjanje problema iz koda, poboljšanje stabilnosti koda i osiguranje ispravnosti prilikom ažuriranja koda. Početna faza testiranja softvera je jedinični test , nakon čega slijedi UI test i test integracije.

Paket za testiranje

u Golangu, jedinično testiranje izvodi se pomoću paketa tzv testiranje . Paket nudi razne funkcije koje nam omogućuju testiranje našeg koda. Go kod se može automatski testirati uz pomoć paketa za testiranje.







Primjer programa za testiranje

Trebamo kod za analizu naših testova prije nego što ga možemo napisati jedinični testovi . Napravit ćemo mali program koji zbraja dva broja.



glavni paket

uvoz (
'fmt'
)
funcAdd ( a int , b int ) int {
povratak a + b
}

funkcija glavna ( ) {
fmt. Println ( Dodati ( 2 , 3 ) )
}

Gornji kod definira Dodati() funkcija koja zbraja dva broja, a i b , kao ulaze i izlaze rezultat kao cijeli broj. Zbrajanje brojeva 2 i 3 sve je što glavna funkcija radi prije ispisa rezultata.







Konvencija pisanja jediničnih testova u pokretu

Svaki Go projekt trebao bi imati zasebnu testnu datoteku koja sadrži sve testove za taj projekt. Datoteka bi trebala imati isti naziv kao i datoteka koja se testira _test.kreni dodaje se na kraj naziva datoteke. Na primjer, ako želimo testirati datoteku pod nazivom kalkulator.kreni , trebali bismo dati naziv našoj testnoj datoteci calculator_test.go .

To je standardna praksa za Idite na testiranje datoteka da se nalaze u istom paketu ili direktoriju kao kod koji procjenjuju. Kada koristite naredbu go build, kompajler ne stvara te datoteke, tako da ne morate biti zabrinuti da će se pojaviti u implementacijama.



Da napišem a jedinični test u Go, moramo koristiti testiranje paket. Svaku testnu funkciju možemo započeti riječju Test a zatim dodajte opis onoga što želimo testirati. Na primjer, TestAddition ili TestOduzimanje . Zatim možemo napisati testni kod koji provjerava daje li funkcija koju testiramo očekivane rezultate.

U Gou svaka testna funkcija treba započeti naredbom t := testiranje.T{}. Ova izjava stvara novu testiranje objekt pomoću kojeg možemo provjeriti je li test prošao ili nije. Tada možemo koristiti t.Errorf() funkciju za ispis poruke o pogrešci ako test ne uspije.

Kako napisati kod za testiranje?

Kada je riječ o pisanju jediničnih testova u Gou, važno je započeti određivanjem paketa koji želite testirati. Nakon uvoza paketa za testiranje, možete pristupiti različitim vrstama i metodama koje paket izvozi, uključujući testiranje.T tip. Sama logika testiranja tada se piše u funkciji koja počinje ključnom riječi 'Test' nakon čega slijedi opisni naziv, kao što je TestAdd() . Unutar ove funkcije možete uključiti kod za test i sve tvrdnje potrebne za provjeru očekivanog ponašanja.

Ukratko, karakteristike testa u Go-u su sljedeće:

  • Jedini i jedini traženi parametar je t *ispitivanje.T
  • Funkcija testiranja počinje riječju Test, a zatim slijedi riječ ili fraza koja počinje velikim slovom.
  • Za označavanje kvara, funkcija testiranja trebala bi pozvati bilo koju od njih t.Errorf ili t.Neuspjeh, i za pružanje dodatnih informacija o otklanjanju pogrešaka bez izazivanja kvara, može se koristiti t.Log.
  • Za isporuku informacija o otklanjanju pogrešaka koristite t.Log.
  • Testovi se pohranjuju u datoteke s imenom foo_test.go , na primjer, math_test.go .

Zatvorite datoteku nakon što je spremite.

glavni paket

uvoz (
'testiranje'
)

funcTestAdd ( t * testiranje. T ) {
proizlaziti := Dodati ( 2 , 3 )
ako proizlaziti != 5 {
t. Errorf ( 'Dodaj(2, 3) = %d; želim 5' , proizlaziti )
}
}

The Dodati() funkcija je testirana od strane TestAdd() funkcija, koja je definirana u ovom testu. Koristi brojeve 2 i 3 za pozivanje Dodaj, a zatim potvrđuje da je ishod 5. Ispisuje se poruka o pogrešci ako je rezultat manji od 5 kada t.Errorf() se poziva.

Na kraju, važno je znati da Go ima ugrađeni alat za testiranje tzv idi testirati. Ovaj alat pokreće sve testove u projektu i daje izvješće o rezultatima. Idi testiraj mora se upisati u terminalu dok ste u direktoriju projekta za početak testova. Svi testovi u tom direktoriju pokrenut će se kao rezultat.

< snažna > idi testirati < test - datoteka - Ime > _test. ići snažna >

Rezultati jediničnog testa

Izlaz će vam pokazati testne funkcije koje su prošle, nisu uspjele ili su preskočene.

PROLAZNO ili OK označava da kod radi kako je predviđeno. Dobit ćete IZNEVJERITI ako test ne uspije.

The _test.kreni sufiks je jedini koji podnaredba go test provjerava u datotekama. Nakon toga, go test pretražuje te datoteke za posebne funkcije, kao što je func TestXxx i nekoliko drugih. Go test gradi i ispravno poziva te funkcije, izvršava ih, prikuplja i prijavljuje rezultate te na kraju čisti sve u privremenom glavnom paketu.

Posljednji korak je integracija vaših testova u vaš tijek razvoja. Najbolja praksa je pokrenuti svoje testove svaki put kada predate svoj kod u repozitorij. Integracija vaših testova u vaš radni tijek razvoja osigurava da se vaš kod kontinuirano testira i da se svi problemi riješe prije implementacije.

Zaključak

Pisanje jedinični testovi je ključna komponenta razvoja softvera jer jamči da je vaš kod skalabilan, funkcionalan i učinkovit. Knjižnica za testiranje Go jednostavna je i jednostavna za korištenje. Trebali biste moći stvoriti Golang jedinični testovi najviše kvalitete slijedeći gore navedene postupke. Ne zaboravite integrirati svoje testove u svoj radni tijek razvoja kako biste osigurali da se vaš kod kontinuirano testira i da su svi problemi riješeni prije implementacije.