Hvordan skrive enhetstest i Golang?

Hvordan Skrive Enhetstest I Golang



Hvis du er en Go-utvikler, vet du hvor viktig testing er for å sikre kvaliteten på koden din. Skriving enhetstester er en viktig del av utviklingsprosessen, og den kan hjelpe deg med å fange opp feil tidlig, og spare deg for tid og penger i det lange løp. I denne artikkelen vil vi diskutere hvordan du skriver enhetstester i Golang.

Hva er enhetstesting?

Det første trinnet er å forstå hva enhetstesting midler. Enhetstesting refererer til prosessen med å teste små kodeenheter eller moduler for å sikre at hver av dem fungerer som forventet. Enhetstesting brukes til å fjerne problemer fra kode, forbedre kodestabilitet og sikre korrekthet ved oppdatering av kode. Den innledende fasen av programvaretesting er enhetstest , som etterfølges av UI-testen og integrasjonstesten.

Testpakken

i Golang, enhetstesting utføres ved hjelp av en pakke kalt testing . Pakken inneholder ulike funksjoner som lar oss teste koden vår. Go-koden kan testes automatisk ved hjelp av testpakken.







Eksempel program å teste

Vi trenger litt kode for å analysere testene våre før vi kan skrive noen enhetstester . Vi skal lage et lite program som legger til to tall.



hovedpakke

import (
'fmt'
)
funcAdd ( en int , b int ) int {
komme tilbake en + b
}

func main ( ) {
fmt. Println ( Legg til ( 2 , 3 ) )
}

Koden ovenfor definerer Legg til() funksjon, som legger til to tall, en og b , som inputs og outputs resultatet som et heltall. Å legge til tallene 2 og 3 er alt hovedfunksjonen gjør før du skriver ut resultatet.







Konvensjon om skriftlige enhetstester på farten

Hvert Go-prosjekt bør ha en egen testfil som inneholder alle testene for det prosjektet. Filen skal ha samme navn som filen som testes og skal ha _test.go lagt til på slutten av filnavnet. For eksempel, hvis vi ønsker å teste en fil med navnet kalkulator.go , bør vi navngi testfilen vår calculator_test.go .

Det er standard praksis for Gå og test filer å være plassert i samme pakke eller katalog som koden de evaluerer. Når du bruker go build-kommandoen, oppretter ikke kompilatoren disse filene, så du trenger ikke å være bekymret for at de dukker opp i distribusjoner.



Å skrive en enhetstest i Go må vi bruke testing pakke. Vi kan starte hver testfunksjon med ordet Test og legg deretter til en beskrivelse av hva vi ønsker å teste. For eksempel, TestAddition eller Testsubtraksjon . Vi kan da skrive testkoden som sjekker om funksjonen vi tester gir de forventede resultatene.

I Go skal hver testfunksjon starte med setningen t := testing.T{}. Denne uttalelsen skaper en ny testing objekt som vi kan bruke for å sjekke om testen har bestått eller ikke bestått. Vi kan da bruke t.Errorf() funksjon for å skrive ut en feilmelding hvis testen mislykkes.

Hvordan skrive testkoden?

Når det gjelder å skrive enhetstester i Go, er det viktig å begynne med å spesifisere pakken du ønsker å teste. Etter å ha importert testpakken, kan du få tilgang til ulike typer og metoder som pakken eksporterer, inkludert testing.T type. Selve testlogikken skrives da i en funksjon som starter med nøkkelordet 'Test' etterfulgt av et beskrivende navn, som f.eks TestAdd() . Innenfor denne funksjonen kan du inkludere koden for testen og eventuelle påstander som er nødvendige for å bekrefte forventet oppførsel.

For å oppsummere er egenskapene til en test i Go som følger:

  • Den eneste og eneste nødvendige parameteren er t *testing.T
  • Testfunksjonen begynner med ordet Test og etterfølges av et ord eller en frase som begynner med stor bokstav.
  • For å indikere en feil, bør testfunksjonen ringe enten t.Feil eller t. Mislykket, og for å gi ytterligere feilsøkingsinformasjon uten å forårsake feil, kan t.Log brukes.
  • For å levere feilsøkingsinformasjon, bruk t.Log.
  • Tester lagres i filer med navnet foo_test.go , for eksempel, math_test.go .

Lukk filen etter at du har lagret den.

hovedpakke

import (
'testing'
)

funcTestAdd ( t * testing. T ) {
resultat := Legg til ( 2 , 3 )
hvis resultat != 5 {
t. Feilf ( 'Legg til(2, 3) = %d; ønsker 5' , resultat )
}
}

De Legg til() funksjonen er testet av TestAdd() funksjon, som er definert i denne testen. Den bruker tallene 2 og 3 for å ringe Add, og så bekrefter den at utfallet er 5. En feilmelding skrives ut hvis resultatet er mindre enn 5 når t.Errorf() er påberopt.

Til slutt er det viktig å vite at Go har et innebygd testverktøy kalt gå test. Dette verktøyet kjører alle testene i prosjektet og gir en rapport over resultatene. Gå test må skrives inn i terminalen mens du er i prosjektkatalogen for å starte testene. Alle testene i den katalogen vil kjøre som et resultat.

< sterk > gå test < test - fil - Navn > _test. sterk >

Resultater av enhetstest

Utdataene vil vise deg testfunksjonene som bestod, mislyktes eller hoppet over.

PASS eller OK angir at koden fungerer etter hensikten. Du vil motta FAIL hvis en test mislykkes.

De _test.go suffikset er det eneste som underkommandoen for go test sjekker etter i filer. Etterpå, testsøk i disse filen(e) etter spesielle funksjoner, for eksempel func TestXxx og flere andre. Go test bygger og kaller disse funksjonene riktig, utfører dem, samler inn og rapporterer resultatene, og til slutt rydder opp alt i en midlertidig hovedpakke.

Det siste trinnet er å integrere testene dine i utviklingsarbeidsflyten. Den beste praksisen er å kjøre testene hver gang du sender koden til et depot. Integreringen av testene dine i utviklingsarbeidsflyten sikrer at koden din testes kontinuerlig, og at eventuelle problemer løses før distribusjon.

Konklusjon

Skriving enhetstester er en avgjørende komponent i programvareutvikling fordi den garanterer at koden din er skalerbar, funksjonell og effektiv. Go-testbiblioteket er enkelt og greit å bruke. Du bør kunne lage Golang enhetstester av høyeste kvalitet ved å følge prosedyrene oppført ovenfor. Husk å integrere testene dine i utviklingsarbeidsflyten for å sikre at koden din testes kontinuerlig, og at eventuelle problemer løses før distribusjon.