Heim > Artikel > Backend-Entwicklung > Wie teste ich Pakete in Go?
Durch die Verwendung des integrierten Test-Frameworks der Go-Sprache können Entwickler problemlos Tests für ihren Code schreiben und ausführen. Die Testdatei endet mit _test.go und enthält Testfunktionen, die mit Test beginnen, wobei der Parameter *testing.T die Testinstanz darstellt. Fehlermeldungen werden mit t.Error() protokolliert. Tests können durch Ausführen des Befehls go test ausgeführt werden. Untertests ermöglichen die Zerlegung von Testfunktionen in kleinere Teile und die Erstellung über t.Run(). Ein praktisches Beispiel ist eine für die Funktion IsStringPalindrome() im Paket utils geschriebene Testdatei, die die Korrektheit der Funktion anhand einer Reihe von Eingabezeichenfolgen und der erwarteten Ausgabe testet.
Die Go-Sprache bietet ein leistungsstarkes integriertes Test-Framework, mit dem Entwickler problemlos Tests für ihren Code schreiben und ausführen können. So verwenden Sie das Go-Testpaket zum Testen Ihres Programms.
In Go enden Testdateien mit _test.go und werden im selben Verzeichnis abgelegt wie das Paket, das Sie testen möchten. Testdateien enthalten eine oder mehrere Testfunktionen, die mit Test
beginnen, gefolgt von der zu testenden Funktionalität. Test
开头,后面跟要测试的功能。
以下是一个示例测试函数:
import "testing" func TestAdd(t *testing.T) { if Add(1, 2) != 3 { t.Error("Add(1, 2) returned an incorrect result") } }
*testing.T
参数表示测试实例。错误信息使用 t.Error()
记录。
可以通过运行以下命令来运行测试:
go test
如果测试成功,将显示诸如 "PASS" 之类的消息。如果出现错误,将显示错误信息。
子测试允许将一个测试函数分解成更小的部分。这有助于组织测试代码并提高可读性。
以下是如何编写子测试:
func TestAdd(t *testing.T) { t.Run("PositiveNumbers", func(t *testing.T) { if Add(1, 2) != 3 { t.Error("Add(1, 2) returned an incorrect result") } }) t.Run("NegativeNumbers", func(t *testing.T) { if Add(-1, -2) != -3 { t.Error("Add(-1, -2) returned an incorrect result") } }) }
假设我们有一个名为 utils
的包,里面包含一个 IsStringPalindrome()
函数,用于检查一个字符串是否是回文字符串。
下面是如何编写一个测试文件来测试这个函数:
package utils_test import ( "testing" "utils" ) func TestIsStringPalindrome(t *testing.T) { tests := []struct { input string expected bool }{ {"", true}, {"a", true}, {"bb", true}, {"racecar", true}, {"level", true}, {"hello", false}, {"world", false}, } for _, test := range tests { t.Run(test.input, func(t *testing.T) { if got := utils.IsStringPalindrome(test.input); got != test.expected { t.Errorf("IsStringPalindrome(%s) = %t; want %t", test.input, got, test.expected) } }) } }
在这个测试文件中:
tests
数组定义了一系列输入字符串和预期的输出。for
循环遍历 tests
数组,并使用 t.Run()
创建子测试。utils.IsStringPalindrome()
函数并将其结果与预期结果进行比较。如果结果不一致,它使用 t.Errorf()
*testing.T
Die Parameter stellen die Testinstanz dar. Fehlermeldungen werden mit t.Error()
protokolliert. 🎜🎜Tests ausführen🎜🎜Sie können Tests ausführen, indem Sie den folgenden Befehl ausführen: 🎜rrreee🎜Wenn der Test erfolgreich ist, wird eine Meldung wie „PASS“ angezeigt. Tritt ein Fehler auf, wird eine Fehlermeldung angezeigt. 🎜🎜Subtests verwenden🎜🎜Subtests ermöglichen das Aufteilen einer Testfunktion in kleinere Teile. Dies hilft, Testcode zu organisieren und die Lesbarkeit zu verbessern. 🎜🎜So schreiben Sie einen Untertest: 🎜rrreee🎜Praktischer Fall🎜🎜Angenommen, wir haben ein Paket mit dem Namen utils
, das eine Funktion IsStringPalindrome()
enthält, um zu prüfen, ob ein String vorhanden ist ist ein Palindrom. 🎜🎜So schreiben Sie eine Testdatei, um diese Funktion zu testen: 🎜rrreee🎜In dieser Testdatei: 🎜tests
Das Array definiert eine Reihe von Eingabezeichenfolgen und die erwartete Ausgabe. 🎜for
durchläuft das Array tests
und erstellt Untertests mit t.Run()
. 🎜utils.IsStringPalindrome()
auf und vergleicht seine Ergebnisse mit den erwarteten Ergebnissen. Wenn die Ergebnisse inkonsistent sind, wird t.Errorf()
verwendet, um einen Fehler zu protokollieren. 🎜🎜Das obige ist der detaillierte Inhalt vonWie teste ich Pakete in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!