Erste Schritte beim Schreiben von Tests

Abgeschlossen

Bevor wir mit dem Schreiben unseres Programms beginnen, lassen Sie uns über das Testen sprechen und unseren ersten Test erstellen. Das Testen von Paketen bietet Unterstützung für das automatisierte Testen von Go-Paketen. Testen ist wichtig, um sicherzustellen, dass der Code wie erwartet funktioniert. Im Allgemeinen sollte es für jede Funktion in einem Paket mindestens einen Test geben, um die Funktionalität zu bestätigen.

Eine bewährte Methode bei der Programmierung ist es, den TDD-Ansatz (testgesteuerte Entwicklung) zu verwenden. Mit diesem Ansatz schreiben wir zuerst unsere Tests. Wir stellen sicher, dass diese Tests fehlschlagen, da der von ihnen getestete Code noch nicht existiert. Und dann werden wir den Code schreiben, der den Tests gerecht wird.

Erstellen der Testdatei

Zuerst müssen wir die Go-Datei erstellen, um alle unsere Tests für das bankcore-Paket zu speichern. Wenn Sie eine Testdatei erstellen, muss der Name der Datei mit _test.go enden. Davor können Sie eine beliebige Zeichenfolge verwenden, aber das Muster besteht darin, den Namen der zu testenden Datei zu verwenden.

Außerdem muss jeder Test, den Sie schreiben möchten, eine Funktion sein, die mit Test beginnt. Dann verwenden Sie normalerweise einen beschreibenden Namen für den zu schreibenden Test, z. B. TestDeposit.

Wechseln Sie zum Speicherort $GOPATH/src/bankcore/, und erstellen Sie eine Datei namens bank_test.go mit folgendem Inhalt:

package bank

import "testing"

func TestAccount(t *testing.T) {

}

Öffnen Sie ein Terminal, und stellen Sie sicher, dass Sie sich am Speicherort $GOPATH/src/bankcore/ befinden. Verwenden Sie dann den folgenden Befehl, um die Tests im ausführlichen Modus auszuführen:

go test -v

Go sucht nach allen *_test.go-Dateien, um die Tests auszuführen, daher sollte die folgende Ausgabe angezeigt werden:

=== RUN   TestAccount
--- PASS: TestAccount (0.00s)
PASS
ok      github.com/msft/bank    0.391s

Schreiben eines fehlerhaften Tests

Bevor wir irgendeinen Code schreiben, sollten wir mithilfe von TDD (testgesteuerte Entwicklung) zunächst einen fehlerhaften Test dafür schreiben. Ändern Sie die TestAccount-Funktion mit folgendem Code:

package bank

import "testing"

func TestAccount(t *testing.T) {
    account := Account{
        Customer: Customer{
            Name:    "John",
            Address: "Los Angeles, California",
            Phone:   "(213) 555 0147",
        },
        Number:  1001,
        Balance: 0,
    }

    if account.Name == "" {
        t.Error("can't create an Account object")
    }
}

Wir haben eine Struktur für Konto und Kunde eingeführt, die wir noch nicht implementiert haben. Und wir verwenden die t.Error()-Funktion, um mitzuteilen, dass der Test Fehler aufweisen wird, wenn etwas nicht nach Plan verläuft.

Beachten Sie auch, dass der Test über die Logik verfügt, ein Kontoobjekt zu erstellen (das noch nicht vorhanden ist). Aber wir entwerfen in diesem Moment, wie wir mit unserem Paket interagieren möchten.

Hinweis

Wir stellen Ihnen den Code für die Tests zur Verfügung, da wir sie nicht zeilenweise erklären möchten. Aber Ihre Vorstellung sollte sein, dass Sie Schritt für Schritt beginnen und so viele Iterationen durchführen, wie erforderlich.

In unserem Fall werden wir nur eine Iteration durchführen: Den Test schreiben, sicherstellen, dass er fehlschlägt und den Code schreiben, der dem Test gerecht wird. Wenn Sie selbst programmieren, sollten Sie einfach anfangen und die Komplexität nach und nach steigern.

Wenn Sie den go test -v-Befehl ausführen, sollte ein fehlerhafter Test in der Ausgabe angezeigt werden:

# github.com/msft/bank [github.com/msft/bank.test]
.\bank_test.go:6:13: undefined: Account
.\bank_test.go:7:13: undefined: Customer
FAIL    github.com/msft/bank [build failed]

Lassen wir es jetzt dabei bewenden. Wir werden diesen Test vervollständigen und neue Tests erstellen, während wir die Logik für unser Onlinebanksystem schreiben.