Gunakan perintah go test -cover untuk mengukur liputan dalam ujian unit Go dan nyatakan pilihan -cover atau -coverprofile untuk menjana keputusan -covermode menetapkan mod liputan (tetapkan, kiraan atau atom). Kes praktikal menunjukkan cara menulis ujian dan menjana laporan liputan menggunakan fail konfigurasi liputan dan arahan penutup alat go.
Cara menggunakan alat liputan untuk menguji liputan dalam ujian unit Golang
Alat liputan sangat penting dalam ujian unit kerana ia membantu anda mengenal pasti bahagian kod anda yang belum diuji. Ini penting untuk memastikan kualiti dan kebolehpercayaan kod anda. Di Golang, anda boleh menggunakan perintah go test -cover
untuk mengukur liputan dalam ujian unit. go test -cover
命令来测量单元测试中的覆盖率。
安装覆盖工具
要在 Golang 中使用覆盖工具,您需要安装它。您可以使用以下命令进行安装:
go install golang.org/x/tools/cmd/cover
测量覆盖率
要测量单元测试的覆盖率,请使用 go test
命令并指定 -cover
标志。该标志随后可以接受以下值:
-covermode=mode:设置覆盖模式。可接受的值包括:
实战案例
以下是一个演示如何测量 Golang 单元测试中覆盖率的简要示例:
main.go
package main import ( "fmt" "strconv" ) // Add two numbers func Add(a, b int) int { return a + b } // Convert a string to a number func StrToInt(s string) int { n, err := strconv.Atoi(s) if err != nil { fmt.Println(err.Error()) return 0 } return n }
main_test.go
package main import ( "testing" ) func TestAdd(t *testing.T) { tests := []struct { a int b int want int }{ {1, 2, 3}, {0, 0, 0}, {-1, -1, -2}, } for _, tt := range tests { t.Run(fmt.Sprintf("TestAdd%d_%d", tt.a, tt.b), func(t *testing.T) { if got := Add(tt.a, tt.b); got != tt.want { t.Errorf("Add(%d, %d) = %d, want %d", tt.a, tt.b, got, tt.want) } }) } } func TestStrToInt(t *testing.T) { tests := []struct { s string want int }{ {"1", 1}, {"0", 0}, {"-1", -1}, } for _, tt := range tests { t.Run(fmt.Sprintf("TestStrToInt%s", tt.s), func(t *testing.T) { if got := StrToInt(tt.s); got != tt.want { t.Errorf("StrToInt(%s) = %d, want %d", tt.s, got, tt.want) } }) } } func TestCoverage(t *testing.T) { t.Run("Add", func(t *testing.T) { coverProfile := "add_coverage.out" args := []string{"-test.coverprofile=" + coverProfile, "-test.covermode=set"} cmd := exec.Command("go", "test", args...) if err := cmd.Run(); err != nil { t.Fatalf("Could not run coverage test: %v", err) } }) t.Run("StrToInt", func(t *testing.T) { coverProfile := "str_int_coverage.out" args := []string{"-test.coverprofile=" + coverProfile, "-test.covermode=set"} cmd := exec.Command("go", "test", args...) if err := cmd.Run(); err != nil { t.Fatalf("Could not run coverage test: %v", err) } }) }
在命令行中执行以下命令以生成覆盖率报告:
go test -test.coverprofile=coverage.out
这将在 coverage.out
文件中创建一个覆盖率报告。您可以使用 go tool cover
Pasang alat perlindungan
🎜🎜Untuk menggunakan alat perlindungan di Golang, anda perlu memasangnya. Anda boleh memasangnya menggunakan arahan berikut: 🎜go tool cover -html=coverage.out
go test
dan nyatakan -cover
bendera . Bendera ini kemudiannya boleh menerima nilai berikut: 🎜coverage.out
. Anda boleh melihat laporan menggunakan perintah go tool cover
: 🎜rrreee🎜Ini akan membuka laporan HTML dalam penyemak imbas anda yang menunjukkan baris dan fail yang tidak dilindungi. 🎜Atas ialah kandungan terperinci Bagaimana untuk menggunakan alat liputan dalam ujian unit Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!