Hvordan skriver man enhedstest i Golang?

Hvordan Skriver Man Enhedstest I Golang



Hvis du er en Go-udvikler, ved du, hvor vigtig test er for at sikre kvaliteten af ​​din kode. Skrivning enhedstest er en væsentlig del af udviklingsprocessen, og den kan hjælpe dig med at fange fejl tidligt, hvilket sparer dig tid og penge i det lange løb. I denne artikel vil vi diskutere, hvordan man skriver enhedstest i Golang.

Hvad er enhedstestning?

Det første skridt er at forstå hvad enhedstest midler. Enhedstest henviser til processen med at teste små kodeenheder eller moduler for at sikre, at hver af dem fungerer som forventet. Enhedstest bruges til at fjerne problemer fra kode, forbedre kodestabilitet og sikre korrekthed ved opdatering af kode. Den indledende fase af softwaretest er enhedstest , som efterfølges af UI-testen og integrationstesten.

Testpakken

i Golang, enhedstest udføres ved hjælp af en pakke kaldet afprøvning . Pakken indeholder forskellige funktioner, der giver os mulighed for at teste vores kode. Go-koden kan testes automatisk ved hjælp af testpakken.







Eksempel program til test

Vi har brug for noget kode, som vores test kan analysere, før vi kan skrive nogen enhedstest . Vi laver et lille program, der tilføjer to tal.



hovedpakke

importere (
'fmt'
)
funcAdd ( -en int , b int ) int {
Vend tilbage -en + b
}

func hoved ( ) {
fmt. Udskrivln ( Tilføje ( 2 , 3 ) )
}

Ovenstående kode definerer Tilføje() funktion, som tilføjer to tal, -en og b , som input og output resultatet som et heltal. Tilføjelse af tallene 2 og 3 er alt, hvad hovedfunktionen gør, før resultatet udskrives.







Konvention om skriftlige enhedsprøver på farten

Hvert Go-projekt bør have en separat testfil, der indeholder alle testene for det pågældende projekt. Filen skal have samme navn som den fil, der testes, og skal have _test.go tilføjet til slutningen af ​​filnavnet. For eksempel, hvis vi vil teste en fil med navnet calculator.go , bør vi navngive vores testfil calculator_test.go .

Det er standard praksis for Gå og test filer at være placeret i den samme pakke eller mappe som den kode, de evaluerer. Når du bruger go build-kommandoen, opretter compileren ikke disse filer, så du behøver ikke være bekymret for, at de dukker op i implementeringer.



At skrive en enhedstest i Go skal vi bruge afprøvning pakke. Vi kan starte hver testfunktion med ordet Prøve og tilføj derefter en beskrivelse af, hvad vi vil teste. For eksempel, TestAddition eller Testsubtraktion . Vi kan så skrive testkoden, der kontrollerer, om den funktion, vi tester, returnerer de forventede resultater.

I Go skal hver testfunktion starte med sætningen t := test.T{}. Denne erklæring skaber en ny afprøvning objekt, som vi kan bruge til at kontrollere, om testen er bestået eller ikke bestået. Så kan vi bruge t.Errorf() funktion til at udskrive en fejlmeddelelse, hvis testen mislykkes.

Hvordan skriver man testkoden?

Når det kommer til at skrive enhedstests i Go, er det vigtigt at begynde med at angive den pakke, du ønsker at teste. Efter import af testpakken kan du få adgang til forskellige typer og metoder, som pakken eksporterer, herunder test.T type. Selve testlogikken er så skrevet i en funktion, der starter med nøgleordet 'Prøve' efterfulgt af et beskrivende navn, som f.eks TestAdd() . Inden for denne funktion kan du inkludere koden til testen og eventuelle påstande, der er nødvendige for at verificere den forventede adfærd.

For at opsummere er karakteristikaene for en test i Go som følger:

  • Den eneste og eneste nødvendige parameter er t *testning.T
  • Testfunktionen begynder med ordet Test og efterfølges derefter af et ord eller en sætning, der begynder med et stort bogstav.
  • For at indikere en fejl skal testfunktionen kalde enten t.Fejl eller t. Mislykkedes, og for at give yderligere debug-information uden at forårsage fejl, kan t.Log bruges.
  • Anvend t.Log.
  • Tests gemmes i filer med navnet foo_test.go , for eksempel, math_test.go .

Luk filen efter at have gemt den.

hovedpakke

importere (
'testning'
)

funcTestAdd ( t * afprøvning. T ) {
resultat := Tilføje ( 2 , 3 )
hvis resultat != 5 {
t. Fejl ( 'Tilføj(2, 3) = %d; ønsker 5' , resultat )
}
}

Det Tilføje() funktionen er testet af TestAdd() funktion, som er defineret i denne test. Den bruger tallene 2 og 3 til at kalde Tilføj, og så bekræfter den, at resultatet er 5. Der udskrives en fejlmeddelelse, hvis resultatet er mindre end 5, når t.Errorf() er påberåbt.

Endelig er det vigtigt at vide, at Go har et indbygget testværktøj kaldet gå til test. Dette værktøj kører alle testene i projektet og giver en rapport over resultaterne. Gå test skal indtastes i terminalen mens du er i projektbiblioteket for at starte testene. Alle testene i den mappe vil køre som et resultat.

< stærk > gå til test < prøve - fil - navn > _prøve. stærk >

Resultater af enhedstest

Outputtet vil vise dig de testfunktioner, der bestod, mislykkedes eller sprang over.

PASS eller OK angiver, at koden fungerer efter hensigten. Du vil modtage SVIGTE hvis en test mislykkes.

Det _test.go suffiks er det eneste, som go test-underkommandoen tjekker efter i filer. Bagefter, test søger efter disse filer for eventuelle specielle funktioner, såsom func TestXxx og flere andre. Go testbygger og kalder disse funktioner korrekt, udfører dem, samler og rapporterer resultaterne og rydder til sidst op i alt i en midlertidig hovedpakke.

Det sidste trin er at integrere dine tests i din udviklingsworkflow. Den bedste praksis er at køre dine tests, hver gang du overfører din kode til et lager. Integrationen af ​​dine tests i dit udviklingsworkflow sikrer, at din kode løbende testes, og eventuelle problemer løses før implementering.

Konklusion

Skrivning enhedstest er en afgørende komponent i softwareudvikling, fordi den garanterer, at din kode er skalerbar, funktionel og effektiv. Go-testbiblioteket er ubesværet og ligetil at bruge. Du burde være i stand til at oprette Golang enhedstest af højeste kvalitet ved at følge procedurerne ovenfor. Husk at integrere dine tests i dit udviklingsworkflow for at sikre, at din kode løbende testes, og at eventuelle problemer er løst før implementering.