Wie schreibe ich einen Unit-Test in Golang?

Wie Schreibe Ich Einen Unit Test In Golang



Wenn Sie ein Go-Entwickler sind, wissen Sie, wie wichtig Tests für die Sicherstellung der Qualität Ihres Codes sind. Schreiben Unit-Tests ist ein wesentlicher Bestandteil des Entwicklungsprozesses und kann Ihnen dabei helfen, Fehler frühzeitig zu erkennen und so auf lange Sicht Zeit und Geld zu sparen. In diesem Artikel besprechen wir, wie man schreibt Unit-Tests in Golang.

Was ist Unit-Testing?

Der erste Schritt besteht darin, zu verstehen, was Unit-Tests bedeutet. Unit-Tests bezieht sich auf den Prozess des Testens kleiner Codeeinheiten oder Module, um sicherzustellen, dass jede von ihnen wie erwartet funktioniert. Unit-Tests wird verwendet, um Probleme aus dem Code zu entfernen, die Codestabilität zu verbessern und die Korrektheit beim Aktualisieren des Codes sicherzustellen. Die erste Phase des Softwaretests ist die Gerätetest , worauf der UI-Test und der Integrationstest folgen.

Das Testpaket

In Golang, Unit-Tests wird mit einem Paket namens ausgeführt testen . Das Paket stellt verschiedene Funktionen bereit, die es uns ermöglichen, unseren Code zu testen. Der Go-Code kann mit Hilfe des Testpakets automatisch getestet werden.







Beispielprogramm zum Testen

Wir benötigen Code, den unsere Tests analysieren können, bevor wir Code schreiben können Unit-Tests . Wir werden ein kleines Programm erstellen, das zwei Zahlen addiert.



Paket main

importieren (
„fmt“
)
funcAdd ( A int , B int ) int {
zurückkehren A + B
}

Funktion main ( ) {
fmt. Druckenln ( Hinzufügen ( 2 , 3 ) )
}

Der obige Code definiert die Hinzufügen() Funktion, die zwei Zahlen addiert, A Und B , as gibt das Ergebnis als Ganzzahl ein und aus. Das Addieren der Zahlen 2 und 3 ist alles, was die Hauptfunktion tut, bevor sie das Ergebnis ausgibt.







Konvention zum Schreiben von Unit-Tests im Go

Jedes Go-Projekt sollte über eine separate Testdatei verfügen, die alle Tests für dieses Projekt enthält. Die Datei sollte denselben Namen haben wie die zu testende Datei _test.go am Ende des Dateinamens hinzugefügt. Wenn wir beispielsweise eine Datei mit dem Namen testen möchten Rechner.go , sollten wir unsere Testdatei benennen Rechner_test.go .

Es ist gängige Praxis für Testen Sie Dateien müssen sich im selben Paket oder Verzeichnis befinden wie der Code, den sie auswerten. Wenn Sie den Befehl „go build“ verwenden, erstellt der Compiler diese Dateien nicht, sodass Sie sich keine Sorgen machen müssen, dass sie in Bereitstellungen angezeigt werden.



Um ein zu schreiben Gerätetest In Go müssen wir das verwenden testen Paket. Wir können jede Testfunktion mit dem Wort beginnen Prüfen und fügen Sie dann eine Beschreibung dessen hinzu, was wir testen möchten. Zum Beispiel, TestAddition oder TestSubtraction . Anschließend können wir den Testcode schreiben, der prüft, ob die von uns getestete Funktion die erwarteten Ergebnisse liefert.

In Go sollte jede Testfunktion mit der Anweisung beginnen t := testen.T{}. Diese Aussage schafft etwas Neues testen Objekt, mit dem wir überprüfen können, ob der Test bestanden wurde oder nicht. Wir können dann das verwenden t.Errorf() Funktion zum Drucken einer Fehlermeldung, wenn der Test fehlschlägt.

Wie schreibe ich den Testcode?

Beim Schreiben von Unit-Tests in Go ist es wichtig, zunächst das Paket anzugeben, das Sie testen möchten. Nach dem Import des Testpakets können Sie auf verschiedene Typen und Methoden zugreifen, die das Paket exportiert, einschließlich der testen.T Typ. Die Testlogik selbst wird dann in eine Funktion geschrieben, die mit dem Schlüsselwort beginnt 'Prüfen' gefolgt von einem beschreibenden Namen, z TestAdd() . In diese Funktion können Sie den Code für den Test und alle zur Überprüfung des erwarteten Verhaltens erforderlichen Behauptungen einschließen.

Zusammenfassend sind die Merkmale eines Tests in Go wie folgt:

  • Der einzige und einzige erforderliche Parameter ist t *testing.T
  • Die Testfunktion beginnt mit dem Wort Test und wird dann von einem Wort oder einer Phrase gefolgt, die mit einem Großbuchstaben beginnt.
  • Um einen Fehler anzuzeigen, sollte die Testfunktion entweder aufrufen t.Fehler oder t.Fail, und um zusätzliche Debug-Informationen bereitzustellen, ohne einen Fehler zu verursachen, kann t.Log verwendet werden.
  • Um fehlerfreie Debug-Informationen bereitzustellen, verwenden Sie t.Log.
  • Tests werden in Dateien mit dem Namen gespeichert foo_test.go , Zum Beispiel, math_test.go .

Schließen Sie die Datei nach dem Speichern.

Paket main

importieren (
'testen'
)

funcTestAdd ( T * testen. T ) {
Ergebnis := Hinzufügen ( 2 , 3 )
Wenn Ergebnis != 5 {
T. Fehlerf ( „Add(2, 3) = %d; will 5“ , Ergebnis )
}
}

Der Hinzufügen() Die Funktion wird von der getestet TestAdd() Funktion, die in diesem Test definiert wird. Es verwendet die Zahlen 2 und 3, um Add aufzurufen, und bestätigt dann, dass das Ergebnis 5 ist. Wenn das Ergebnis kleiner als 5 ist, wird eine Fehlermeldung ausgegeben t.Errorf() aufgerufen wird.

Abschließend ist es wichtig zu wissen, dass Go über ein integriertes Testtool namens verfügt geh testen. Dieses Tool führt alle Tests im Projekt aus und erstellt einen Bericht über die Ergebnisse. Gehen Sie testen muss im Terminal im Projektverzeichnis eingegeben werden, um die Tests zu starten. Als Ergebnis werden alle Tests in diesem Verzeichnis ausgeführt.

< stark > geh testen < prüfen - Datei - Name > _prüfen. gehen stark >

Ergebnisse des Unit-Tests

Die Ausgabe zeigt Ihnen die Testfunktionen, die bestanden, fehlgeschlagen oder übersprungen wurden.

PASS oder OK bedeutet, dass der Code wie vorgesehen funktioniert. Du wirst erhalten SCHEITERN wenn ein Test fehlschlägt.

Der _test.go Das Suffix ist das einzige, nach dem der Unterbefehl go test in Dateien sucht. Anschließend durchsucht go test diese Datei(en) nach speziellen Funktionen, wie z. B. func TestXxx und mehrere andere. Go Test erstellt und ruft diese Funktionen korrekt auf, führt sie aus, sammelt und meldet die Ergebnisse und bereinigt schließlich alles in einem temporären Hauptpaket.

Der letzte Schritt besteht darin, Ihre Tests in Ihren Entwicklungsworkflow zu integrieren. Die beste Vorgehensweise besteht darin, Ihre Tests jedes Mal auszuführen, wenn Sie Ihren Code in ein Repository übertragen. Durch die Integration Ihrer Tests in Ihren Entwicklungsworkflow wird sichergestellt, dass Ihr Code kontinuierlich getestet wird und alle Probleme vor der Bereitstellung behoben werden.

Abschluss

Schreiben Unit-Tests ist eine entscheidende Komponente der Softwareentwicklung, da sie garantiert, dass Ihr Code skalierbar, funktionsfähig und effektiv ist. Die Go-Testbibliothek ist mühelos und unkompliziert zu verwenden. Sie sollten in der Lage sein, Golang zu erstellen Unit-Tests von höchster Qualität, indem Sie die oben aufgeführten Verfahren befolgen. Denken Sie daran, Ihre Tests in Ihren Entwicklungsworkflow zu integrieren, um sicherzustellen, dass Ihr Code kontinuierlich getestet wird und alle Probleme vor der Bereitstellung behoben werden.