Bagaimana untuk menutup kod dalam ujian unit Golang? Kaedah: Gunakan alat penutup terbina dalam (go test -cover). Gunakan perpustakaan pihak ketiga, seperti fungsi assert testimoni. Contoh praktikal: Gunakan alat penutup dan saksikan fungsi penegasan untuk mengukur liputan kod fungsi Faktor dan jana laporan HTML untuk memaparkan maklumat terperinci.
Bagaimana untuk menutup kod dalam ujian unit Golang?
Pengenalan
Liputan kod ialah metrik yang mengukur bahagian kod sasaran yang diliputi oleh suite ujian. Dalam ujian unit, liputan kod yang tinggi menunjukkan bahawa kebanyakan logik perniagaan telah diuji, meningkatkan kebolehpercayaan ujian.
Kaedah
1. Gunakan alat liputan kod
Bahasa Go menyediakan alat cover
untuk mengukur liputan kod. Untuk menggunakannya, selain daripada perintah go test
biasa, anda juga perlu menambah bendera -cover
: cover
工具来测量代码覆盖率。要使用它,除了正常的 go test
命令外,还需要添加 -cover
标志:
go test -cover
2. 利用第三方库
还有许多第三方库可以提供更详细的代码覆盖率报告。例如,可以使用 testify
中的 assert
函数:
import ( "testing" "github.com/stretchr/testify/assert" ) func TestSomething(t *testing.T) { assert.Equal(t, 1, something()) // 覆盖了 something() 函数的 return 语句 }
实战案例
下面是一个简单的 Go 语言函数和相关的单元测试:
// main.go package main func Factorial(n int) int { if n == 0 { return 1 } return n * Factorial(n-1) } func main() { println(Factorial(5)) // 输出:120 }
// factorial_test.go package main import "testing" func TestFactorial(t *testing.T) { // 记录 Factorial 函数的覆盖率 t.Run("Cover", func(t *testing.T) { cases := []int{0, 1, 5, 10} for _, n := range cases { Factorial(n) } }) }
运行测试:
go test -cover -coverprofile=cover.out
然后,使用 go tool cover -html=cover.out
rrreee
assert
dalam testify
: 🎜rrreee🎜🎜Kes praktikal🎜🎜🎜Berikut ialah fungsi bahasa Go yang ringkas dan ujian unit berkaitan: 🎜rrreeerrreee 🎜 Jalankan ujian: 🎜rrreee🎜 Kemudian, gunakan go tool cover -html=cover.out
untuk menjana laporan HTML yang menunjukkan butiran liputan. 🎜Atas ialah kandungan terperinci Bagaimana untuk menutup kod dalam ujian unit Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!