Heim >Backend-Entwicklung >Golang >Ein Artikel, in dem die Verwendung des Golang-Testtools ausführlich erläutert wird

Ein Artikel, in dem die Verwendung des Golang-Testtools ausführlich erläutert wird

PHPz
PHPzOriginal
2023-03-30 13:34:541179Durchsuche

Mit der kontinuierlichen Weiterentwicklung des Softwareentwicklungsprozesses hat sich das automatisierte Testen nach und nach zu einer der Hauptformen des Softwaretests entwickelt. Allerdings kann die Auswahl der Testtools sowie der Prozess des Erlernens und Verwendens oft verwirrend und knifflig sein. In diesem Artikel besprechen wir die Verwendung des Golang-Testtools, eines einfachen, aber leistungsstarken Testframeworks, das Ihnen beim Schreiben hochwertiger Testfälle helfen und sicherstellen kann, dass Ihr Code in realen Anwendungen perfekt funktioniert.

Was ist ein Golang-Test?

golang test ist das offizielle Testframework, das mit der Programmiersprache Go geliefert wird. Mit Hilfe des Befehlszeilentools go test können Entwickler problemlos Testfälle schreiben und ausführen sowie Testabdeckungsberichte im Code-Repository generieren. Seine Einfachheit und Flexibilität machen es für viele Go-Entwickler zum Test-Framework der Wahl.

Golang-Testverwendung

Golang-Test unterstützt drei Testtypen: Unit-Test, Leistungstest und Beispieltest.

Unit-Tests

Das Schreiben von Unit-Tests in Go ist sehr einfach. Erstellen Sie einfach eine neue Go-Datei, die mit _test endet, und schreiben Sie eine oder mehrere Funktionen, die mit Test beginnen und einen *testing-Parameter akzeptieren. wie unten gezeigt: _test 结尾,并编写一个或多个函数,这些函数以 Test 开头并接受一个 *testing.T 参数,如下所示:

package mypackage_test

import (
    "testing"
)

func TestAdd(t *testing.T) {
    if Add(1, 2) != 3 {
        t.Errorf("Expected 3 but got %d", Add(1, 2))
    }
}

在这个示例中,我们测试了一个名为 Add 的函数,该函数返回传递给它的两个数字的和。如果我们运行测试,它将输出类似于 --- FAIL: TestAdd (0.00s) 这样的结果,因为断言失败了。如果测试成功,将输出 PASS

性能测试

在 Go 中,性能测试同样简单。您只需要使用一个名为 Benchmark 的函数来编写一个性能测试,该函数接受一个 *testing.B 参数,如下所示:

func BenchmarkAdd(b *testing.B) {
    for i := 0; i < b.N; i++ {
        Add(1, 2)
    }
}

该示例测试了我们的 Add 函数的性能,该函数将两个数字相加。在测试中,我们将 Add 函数调用 b.N 次,并测量测试的总时间。Golang test 将输出一个结果表,其中包含每个测试的平均时间以及每个迭代的总时间。

示例测试

示例测试编写是 Golang test 的另一种模式。在这种模式下,我们编写一些简单的使用示例,以演示您的代码如何工作。Golang test 将生成实际的测试代码,并在执行测试时运行这些示例。示例测试可以通过创建一个名为 examples_test.go 的文件来定义,其中包含示例函数。

func ExampleAdd() {
    fmt.Println(Add(1, 2))
    // Output: 3
}

在该示例中,我们编写了一个 Add 函数的示例,对其进行了调用,并测试了输出是否正确。如果我们运行 go test,则可以看到示例测试的输出。

测试覆盖率

golang test 还支持通过 go test -cover

PASS
coverage: 80.8% of statements
ok      mypackage   0.062s
In diesem Beispiel testen wir eine Funktion namens Add, die die Summe zweier übergebener Zahlen zurückgibt. Wenn wir den Test ausführen, wird etwas wie --- FAIL: TestAdd (0.00s) ausgegeben, da die Behauptung fehlgeschlagen ist. Wenn der Test erfolgreich ist, wird PASS ausgegeben.

Leistungstests

In Go sind Leistungstests genauso einfach. Sie müssen lediglich einen Leistungstest mit einer Funktion namens Benchmark schreiben, die einen *testing.B-Parameter wie diesen akzeptiert:

rrreee

Dieser Beispieltest verbessert die Leistung unseres Add-Funktion, die zwei Zahlen addiert. Im Test rufen wir die Add-Funktion b.N Mal auf und messen die Gesamtzeit des Tests. Der Golang-Test gibt eine Ergebnistabelle mit der durchschnittlichen Zeit für jeden Test und der Gesamtzeit für jede Iteration aus. 🎜🎜Beispieltest🎜🎜Beispieltestschreiben ist eine weitere Art des Golang-Tests. In diesem Modus schreiben wir einige einfache Anwendungsbeispiele, um zu demonstrieren, wie Ihr Code funktioniert. Der Golang-Test generiert den eigentlichen Testcode und führt die Beispiele aus, wenn die Tests ausgeführt werden. Beispieltests können definiert werden, indem eine Datei namens examples_test.go erstellt wird, die die Beispielfunktionen enthält. 🎜rrreee🎜In diesem Beispiel haben wir ein Beispiel für die Add-Funktion geschrieben, sie aufgerufen und getestet, ob die Ausgabe korrekt war. Wenn wir go test ausführen, können wir die Ausgabe des Beispieltests sehen. 🎜🎜Testabdeckung🎜🎜golang test unterstützt auch die Generierung von Informationen zur Codeabdeckung über den Befehl go test -cover. Mithilfe von Abdeckungstests können Sie feststellen, ob die von Ihnen geschriebenen Tests alle Situationen in Ihrem Code abdecken. Ein Abdeckungsbericht sieht normalerweise so aus: 🎜rrreee🎜In diesem Beispiel beträgt unsere Testabdeckung 80,8 %. 🎜🎜Fazit🎜🎜In diesem Artikel haben wir die Verwendung des Golang-Tests besprochen. Es handelt sich um ein einfaches, aber leistungsstarkes Testframework, mit dem Sie hochwertige Testfälle schreiben können, um sicherzustellen, dass Ihr Code in realen Anwendungen einwandfrei funktioniert. Wir haben gesehen, wie Unit-Tests, Leistungstests und Beispieltests verwendet werden und wie Berichte zur Testabdeckung erstellt werden. Jetzt können Sie mit Golang Test leistungsstarke Testsuiten erstellen, um sicherzustellen, dass Ihr Code unter verschiedenen Umständen ordnungsgemäß funktioniert. 🎜

Das obige ist der detaillierte Inhalt vonEin Artikel, in dem die Verwendung des Golang-Testtools ausführlich erläutert wird. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn