Der Komponententest in der GO-Sprache verwendet die StandardbibliothekEinheitentests beziehen sich auf die Inspektion und Verifizierung der kleinsten testbaren Einheit in der Software
Eine Einheit ist das kleinste künstlich spezifizierte Funktionsmodul, das getestet werden soll
Im Allgemeinen sollte seine spezifische Bedeutung basierend auf der tatsächlichen Situation bestimmt werden. Beispielsweise bezieht sich eine Einheit in der C-Sprache auf eine Funktion, und eine Einheit in Go ist auch eine Testaktivität auf der niedrigsten Ebene, die im Softwareentwicklungsprozess ausgeführt wird. Die unabhängige Einheit wird von der Software isoliert Andere Teile des Programms zum Testen.
Unit-Tests, wir nennen es normalerweise Unit-Tests. Bei der Entwicklung müssen wir auch einige Demos schreiben, um Funktionen oder bestimmte kleine Funktionen in unseren Projekten zu testen
testing
hat die folgenden einfachen Regeln:
_test
t *testing.T
.├── cal.go ├── cal_test.go ├── lll └── sub.go
package mainfunc Addprefix(str string) string { return "hello_"+str}func Addsuffix(str string) string { return str+"_good"}
testing
有如下简单规则:
_test
t *testing.T
写一个简单的例子,添加后缀和前缀
package mainimport "testing"func TestAddprefix(t *testing.T) { Addprefix("xiaomotong")}func TestAddsuffix(t *testing.T) { Addsuffix("xiaomotong")}
cal.go
package mainfunc MyAdd(a int, b int) int { if a+b > 10{ return 10 } return a+b}func MySub(one int, two int) int{ if one - two <p><strong>cal_test.go</strong></p><pre class="brush:php;toolbar:false">package mainimport "testing"import "fmt"func TestMyAdd(t *testing.T) { num := MyAdd(4 ,9) fmt.Println(num) num = MyAdd(4 ,2) fmt.Println(num)}
sub.go
go test -v
sub_test.go
=== RUN TestAddprefix --- PASS: TestAddprefix (0.00s)=== RUN TestAddsuffix --- PASS: TestAddsuffix (0.00s)=== RUN TestMyAdd 10 6 --- PASS: TestMyAdd (0.00s)PASS ok my_new_first/golang_study/later_learning/gotest 0.002s
执行单元测试
=== RUN TestMyAdd 10 6 --- PASS: TestMyAdd (0.00s)PASS ok my_new_first/golang_study/later_learning/gotest 0.002s
-v 是参数会显示每个用例的测试结果,显示执行的单测函数,是否通过以及单测的时候
运行结果如下
package mainimport "testing"import "fmt"func TestMyAdd(t *testing.T) { num := MyAdd(4 ,9) fmt.Println(num) num = MyAdd(4 ,2) fmt.Println(num)}func TestMySub(t *testing.T) { t.Run("one", func(t *testing.T) { if MySub(2, 3) != 1 { t.Fatal("cal error") } }) t.Run("two", func(t *testing.T) { if MySub(3, 1) != 2 { t.Fatal(" error ") } })}
在包目录下执行 go test ,会执行包里面所有的单元测试文件
咱们可以这样用:
go test -run TestMyAdd -v
结果如下:
=== RUN TestMySub=== RUN TestMySub/one --- PASS: TestMySub (0.00s) --- PASS: TestMySub/one (0.00s)PASS ok my_new_first/golang_study/later_learning/gotest 0.003s
就是在我们写的单测函数中,调用 testing 包里的 Run 方法,跑子测试
咱们改造一下上述的 sub_test.go
rrreee单独调用子测试函数,执行 go test -run TestMySub/one -v
go test -v -covermode=count -coverprofile=cover.out
go tool cover -html=cover.out -o cover.html
cal_test .go
sub.go
rrreeesub_test.gorrreee
Komponententests ausführenrrreee
rrreeeDurch die Ausführung von go test im Paketverzeichnis werden alle Komponententestdateien im Paket ausgeführt
Führen Sie nur die angegebene einzelne Testfunktion aus🎜Wir können verwenden Es sieht so aus:🎜🎜go test -run TestMyAdd -v
🎜🎜Die Ergebnisse sind wie folgt:🎜rrreee🎜🎜🎜sub-test🎜🎜 ist der Aufruf der Run-Methode im Testpaket im einzelne Testfunktion, die wir geschrieben haben, um den Untertest auszuführen🎜🎜us Ändern Sie das obige sub_test.go🎜rrreee🎜, um die Untertestfunktion separat aufzurufen, führen Sie go test -run TestMySub/one - v
🎜rrreee🎜🎜🎜 um einen Bericht zu erstellen und die Abdeckungsrate zu berechnen🎜go test -v -covermode=count - coverprofile=cover.out
🎜go-Tool cover -html=cover.out -o cover.html
🎜🎜Öffnen Sie die HTML-Datei im Browser und Sie können sie anzeigen. Der folgende Bericht🎜🎜🎜🎜🎜Der grüne Teil im Bild ist abgedeckt, der rote Teil ist nicht abgedeckt, unser Beispiel hat alle spezifischen Funktionen abgedeckt Funktionen🎜🎜Für die Anweisungen nach dem Go-Test können wir uns auch das Hilfedokument ansehen🎜🎜🎜Viele Unternehmen haben begonnen, die Leistung zu verbessern, und CI/CD muss schnell implementiert werden Führen Sie eine Freigabe mit einem Klick und ein Rollback mit einem Klick durch. Ich beneide diese Orte mit perfekter Infrastruktur, hahaha~🎜Das obige ist der detaillierte Inhalt vonEin Artikel zum Verständnis von Unit-Tests in GO (Unit-Tests). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!