Hoe schrijf je Unit Test in Golang?

Hoe Schrijf Je Unit Test In Golang



Als u een Go-ontwikkelaar bent, weet u hoe belangrijk testen is om de kwaliteit van uw code te waarborgen. Schrijven eenheid testen is een essentieel onderdeel van het ontwikkelingsproces en kan u helpen bugs in een vroeg stadium op te sporen, waardoor u op de lange termijn tijd en geld bespaart. In dit artikel zullen we bespreken hoe te schrijven eenheid testen in Golang.

Wat is unittesten?

De eerste stap is om te begrijpen wat testen van een eenheid middelen. Testen van een eenheid verwijst naar het proces van het testen van kleine code-eenheden of modules om ervoor te zorgen dat ze allemaal werken zoals verwacht. Testen van een eenheid wordt gebruikt om problemen uit code te verwijderen, codestabiliteit te verbeteren en correctheid te garanderen bij het updaten van code. De eerste fase van het testen van software is de hoofdstuk toets , gevolgd door de UI-test en integratietest.

Het testpakket

in Golang, testen van een eenheid wordt uitgevoerd met behulp van een pakket genaamd testen . Het pakket biedt verschillende functies waarmee we onze code kunnen testen. Met behulp van het testpakket kan de Go-code automatisch worden getest.







Voorbeeldprogramma om te testen

We hebben wat code nodig om onze tests te analyseren voordat we er een kunnen schrijven eenheid testen . We gaan een klein programma maken dat twee getallen optelt.



pakket belangrijkste

importeren (
'fmt'
)
funcToevoegen ( A int , B int ) int {
opbrengst A + B
}

func hoofd ( ) {
fmt. Println ( Toevoegen ( 2 , 3 ) )
}

De bovenstaande code definieert de Toevoegen() functie, die twee getallen optelt, A En B , als input en output het resultaat als een geheel getal. Het toevoegen van de nummers 2 en 3 is alles wat de hoofdfunctie doet voordat de uitkomst wordt afgedrukt.







Conventie van het schrijven van unittests onderweg

Elk Go-project moet een apart testbestand hebben dat alle tests voor dat project bevat. Het bestand moet dezelfde naam hebben als het geteste bestand en zou dat ook moeten hebben _test.go toegevoegd aan het einde van de bestandsnaam. Als we bijvoorbeeld een bestand met de naam rekenmachine.go , moeten we ons testbestand een naam geven rekenmachine_test.go .

Het is standaardpraktijk voor Ga bestanden testen zich in hetzelfde pakket of dezelfde map bevinden als de code die ze evalueren. Wanneer u de opdracht go build gebruikt, maakt de compiler deze bestanden niet, dus u hoeft zich geen zorgen te maken dat ze in implementaties verschijnen.



Om een ​​te schrijven hoofdstuk toets in Go moeten we de testen pakket. We kunnen elke testfunctie beginnen met het woord Test en voeg vervolgens een beschrijving toe van wat we willen testen. Bijvoorbeeld, TestToevoeging of TestAftrekken . We kunnen dan de testcode schrijven die controleert of de functie die we testen de verwachte resultaten oplevert.

In Go moet elke testfunctie beginnen met de instructie t := testen.T{}. Deze verklaring creëert een nieuwe testen object dat we kunnen gebruiken om te controleren of de test geslaagd of mislukt is. We kunnen dan de t.Fout() functie om een ​​foutmelding af te drukken als de test mislukt.

Hoe schrijf je de testcode?

Als het gaat om het schrijven van unit-tests in Go, is het belangrijk om te beginnen met het specificeren van het pakket dat u wilt testen. Na het importeren van het testpakket hebt u toegang tot verschillende soorten en methoden die het pakket exporteert, inclusief de testen.T type. De testlogica zelf wordt vervolgens geschreven in een functie die begint met het trefwoord 'Test' gevolgd door een beschrijvende naam, zoals TestToevoegen() . Binnen deze functie kunt u de code voor de test opnemen en eventuele beweringen die nodig zijn om het verwachte gedrag te verifiëren.

Samenvattend zijn de kenmerken van een test in Go als volgt:

  • De enige en enige vereiste parameter is t *testen.T
  • De testfunctie begint met het woord Test en wordt gevolgd door een woord of zin die begint met een hoofdletter.
  • Om een ​​fout aan te geven, moet de testfunctie een van beide aanroepen t.Fout of t.Mislukt, en om aanvullende foutopsporingsinformatie te bieden zonder een fout te veroorzaken, kan t.Log worden gebruikt.
  • Gebruik t.Log om foutopsporingsinformatie te leveren die niet faalt.
  • Tests worden opgeslagen in bestanden met de naam foo_test.go , Bijvoorbeeld, math_test.go .

Sluit het bestand nadat u het hebt opgeslagen.

pakket belangrijkste

importeren (
'testen'
)

funcTestToevoegen ( T * testen. T ) {
resultaat := Toevoegen ( 2 , 3 )
als resultaat != 5 {
T. Foutf ( 'Optellen(2, 3) = %d; wil 5' , resultaat )
}
}

De Toevoegen() functie wordt getest door de TestToevoegen() functie, die in deze test wordt gedefinieerd. Het gebruikt de cijfers 2 en 3 om Toevoegen aan te roepen en bevestigt vervolgens dat de uitkomst 5 is. Er wordt een foutmelding afgedrukt als het resultaat minder is dan 5 wanneer t.Fout() wordt ingeroepen.

Tot slot is het belangrijk om te weten dat Go een ingebouwde testtool heeft genaamd ga testen. Deze tool voert alle tests in het project uit en levert een rapport van de resultaten. Ga testen moet in de terminal worden getypt terwijl u zich in de projectdirectory bevindt om de tests te starten. Als resultaat worden alle tests in die map uitgevoerd.

< sterk > ga testen < test - bestand - naam > _test. gaan sterk >

Resultaten van eenheidstest

De uitvoer toont u de testfuncties die zijn geslaagd, mislukt of overgeslagen.

GESLAAGD of OK geeft aan dat de code werkt zoals bedoeld. Je ontvangt MISLUKKING als een test mislukt.

De _test.go achtervoegsel is de enige waarop het subcommando go test in bestanden controleert. Ga daarna testen en doorzoekt die bestanden op speciale functies, zoals func TestXxx en verscheidene anderen. Go test bouwt en roept deze functies correct aan, voert ze uit, verzamelt en rapporteert de resultaten en ruimt uiteindelijk alles op in een tijdelijk hoofdpakket.

De laatste stap is het integreren van uw tests in uw ontwikkelingsworkflow. De best practice is om uw tests uit te voeren elke keer dat u uw code vastlegt in een repository. De integratie van uw tests in uw ontwikkelingsworkflow zorgt ervoor dat uw code continu wordt getest en dat eventuele problemen worden opgelost voordat deze wordt geïmplementeerd.

Conclusie

Schrijven eenheid testen is een cruciaal onderdeel van softwareontwikkeling omdat het garandeert dat uw code schaalbaar, functioneel en effectief is. De Go-testbibliotheek is moeiteloos en eenvoudig te gebruiken. Je zou in staat moeten zijn om Golang te creëren eenheid testen van de hoogste kwaliteit door de bovenstaande procedures te volgen. Vergeet niet om uw tests te integreren in uw ontwikkelingsworkflow om ervoor te zorgen dat uw code continu wordt getest en dat eventuele problemen worden opgelost voordat deze wordt geïmplementeerd.