Verwenden Sie assert in Go

Sheeraz Gul 15 Februar 2024
Verwenden Sie assert in Go

Dieses Tutorial demonstriert die Verwendung von assert in GoLang.

Verwenden Sie assert in GoLang

GoLang bietet keine integrierte Unterstützung für assert, aber wir können ein weit verbreitetes Drittanbieterpaket assert aus der Testify-API verwenden. Das assert-Paket wird zum Testen von GoLang-Code verwendet, genau wie die assert-Methode anderer Sprachen.

Das Paket assert bietet umfassende Tools zum Testen von Go-Systemen. Es bietet viele Methoden für verschiedene Testtypen; Informationen zu assert-Methoden finden Sie hier.

Bevor wir das Paket assert verwenden, müssen wir es herunterladen und laden. Befolgen Sie die nachstehenden Schritte, um das Paket assert zu erhalten:

  • Öffnen Sie die Eingabeaufforderung als Administrator.
  • Wechseln Sie in das Verzeichnis Ihres Go-Projekts.

    Go Project Directory

  • Stellen Sie sicher, dass keine go.mod-Datei vorhanden ist. Wenn das Verzeichnis eine go.mod-Datei enthält, löschen Sie diese und fahren Sie dann mit dem nächsten Schritt fort.
  • Initialisieren Sie nun eine go.mod-Datei für das assert-Paket und führen Sie den folgenden Befehl aus:
    go mod init github.com/stretchr/testify/assert
    

    Go Mod Init

  • Laden Sie nun das Paket assert herunter und installieren Sie es. Führen Sie den folgenden Befehl aus:
    go get github.com/stretchr/testify/assert
    

    Go Get Assert

  • Der obige Code zieht das assert-Paket, benötigt aber möglicherweise auch andere Abhängigkeiten. Führen Sie den folgenden Befehl aus, um alle anderen Abhängigkeiten herunterzuladen:
    go mod download
    

Sobald das Paket heruntergeladen und installiert ist, können wir die Tests ausführen. Versuchen wir es an einem Beispiel:

package main

import (
    "testing"

    "github.com/stretchr/testify/assert"
)

func TestAssert(t *testing.T) {
    assert := assert.New(t)

    var Demo1 string = "Hello, This is delftstack.com!"
    var Demo2 string = "Hello, This is delftstack.com!"

    assert.Equal(Demo1, Demo2, "Both strings should be equal")
}

Der obige Code testet, ob die beiden Zeichenfolgen gleich sind oder nicht. Wenn die Zeichenfolgen gleich sind, wird der Test bestanden; andernfalls fehlgeschlagen.

Siehe die Ausgabe:

=== RUN   TestAssert
--- PASS: TestAssert (0.00s)
PASS

Die obige Ausgabe zeigt, dass der Test bestanden wurde. Aber was ist, wenn der Test fehlschlägt?

Versuchen wir ein Beispiel, in dem der Assert-Test fehlschlägt:

package main

import (
    "testing"

    "github.com/stretchr/testify/assert"
)

func TestAssert(t *testing.T) {
    assert := assert.New(t)

    var Demo1 string = "Hello, This is delftstack.com!"
    var Demo2 string = "Hello, This is delftstack"

    assert.Equal(Demo1, Demo2, "Both strings should be equal")
}

Wie wir sehen können, sind beide Saiten jetzt nicht gleich, also sollte der Test fehlschlagen. Siehe die Ausgabe:

RUN   TestAssert
    prog.go:15:
            Error Trace:    /prog.go:15
            Error:          Not equal:
                            expected: "Hello, This is delftstack.com!"
                            actual  : "Hello, This is delftstack"

                            Diff:
                            --- Expected
                            +++ Actual
                            @@ -1 +1 @@
                            -Hello, This is delftstack.com!
                            +Hello, This is delftstack
            Test:           TestAssert
            Messages:       Both strings should be equal
--- FAIL: TestAssert (0.00s)
FAIL

Program exited.

Wie wir sehen können, ist der Test jetzt fehlgeschlagen und das Programm zeigt die vollständigen Informationen über den Test an. Es gibt viele Methoden wie equal, die mit assert verwendet werden können, um verschiedene Tests durchzuführen.

Probieren wir Beispiele für die Methoden assert.Nil und assert.NotNil:

package main

import (
    "testing"

    "github.com/stretchr/testify/assert"
)

func TestAssert(t *testing.T) {

    var demo = []string{
        "delftstack.123@hotmail.com",
        "Delftstack <demo@delftstack.com>",
        "demo@delftstack.tv",
        "demohotmail.com",
        "demo@"}

    // assert for nil
    assert.Nil(t, demo)

}

Der obige Code prüft, ob das angegebene Wertobjekt nil ist. Siehe die Ausgabe:

=== RUN   TestAssert
    prog.go:19:
            Error Trace:    /prog.go:19
            Error:          Expected nil, but got: []string{"delftstack.123@hotmail.com", "Delftstack <demo@delftstack.com>", "demo@delftstack.tv", "demohotmail.com", "demo@"}
            Test:           TestAssert
--- FAIL: TestAssert (0.00s)
FAIL

Program exited.

Ähnlich,

package main

import (
    "testing"

    "github.com/stretchr/testify/assert"
)

func TestAssert(t *testing.T) {

    var demo = []string{
        "delftstack.123@hotmail.com",
        "Delftstack <demo@delftstack.com>",
        "demo@delftstack.tv",
        "demohotmail.com",
        "demo@"}

    // assert for not nil
    assert.NotNil(t, demo)

}

Der obige Code testet auf das Objekt oder den Wert not nil. Siehe die Ausgabe:

=== RUN   TestAssert
--- PASS: TestAssert (0.00s)
PASS

Program exited.
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook