Maison > Article > développement back-end > Comment l'architecture du framework Golang réalise-t-elle les tests unitaires et la couverture du code ?
Résumé : Les tests unitaires et la couverture du code améliorent la qualité et la maintenabilité du code Go. Les tests unitaires utilisent le package de tests de Go, tandis que la couverture de code utilise le package de couverture. Les tests unitaires impliquent de définir les entrées, les sorties attendues et de comparer les résultats. La couverture du code suit le pourcentage d'instructions ou de branches de votre code qui sont exécutées. Un exemple pratique montrant comment analyser la fonction CalculateFibonacci() à l'aide de tests unitaires et de couverture de code.
Tests unitaires de l'architecture Golang et couverture du code
Introduction
Les tests unitaires sont essentiels pour garantir l'exactitude et la robustesse du code. La mise en œuvre de tests unitaires et de couverture de code dans les applications Go améliore la qualité et la maintenabilité du code.
Tests unitaires
Utilisation du package testing
de Go testing
包
package mypkg import "testing" func TestMyFunc(t *testing.T) { // 定义输入和预期输出 input := 5 expected := 10 // 调用函数并比较结果 result := myFunc(input) if result != expected { t.Errorf("myFunc(%d) = %d, want %d", input, result, expected) } }
代码覆盖率
使用 Go 的 cover
包
// package main import ( "coverage" "log" "os" ) var coverProfile string func init() { coverProfile = os.Getenv("COVER_PROFILE") if coverProfile != "" { err := coverage.Start(coverage.CoverageOptions{ CoverProfile: coverProfile, }) if err != nil { log.Fatalf("Coverage Error: %v\n", err) } defer coverage.Stop() } } func main() { log.Println("Hello, World!") }
实战案例
考虑一个简单的 CalculateFibonacci()
函数,它计算一个给定正整数的斐波那契数。
单元测试
// package mypkg import ( "fmt" "testing" ) func TestCalculateFibonacci(t *testing.T) { // 定义测试用例 testCases := []struct { input int expected int }{ {0, 0}, {1, 1}, {2, 1}, {3, 2}, {4, 3}, } // 运行测试用例 for _, testCase := range testCases { result := CalculateFibonacci(testCase.input) if result != testCase.expected { t.Errorf( "CalculateFibonacci(%d) = %d, want %d", testCase.input, result, testCase.expected, ) } fmt.Printf( "Test Passed: CalculateFibonacci(%d) = %d\n", testCase.input, result, ) } }
代码覆盖率
// package mypkg // import "coverage" var ( cov *coverage.Coverage ) // func init() {} func CalculateFibonacci(n int) int { if n == 0 || n == 1 { return n } // 计算分支覆盖率 if cov != nil { cov.Line(18) } return CalculateFibonacci(n-1) + CalculateFibonacci(n-2) }
可以通过运行 go test -cover
cover package 🎜🎜rrreee🎜🎜Cas pratique🎜🎜Considérons une simple fonction <code>CalculateFibonacci()
qui calcule Fibonacci pour un entier positif donné. 🎜🎜🎜Test unitaire🎜🎜rrreee🎜🎜Couverture du code🎜🎜rrreee🎜Vous pouvez générer un rapport de couverture de code en exécutant la commande go test -cover
. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!