要約: ユニットテストとコードカバレッジは、Go コードの品質と保守性を向上させます。単体テストでは Go のテスト パッケージが使用され、コード カバレッジではカバー パッケージが使用されます。単体テストには、入力、期待される出力の定義、および結果の比較が含まれます。コード カバレッジは、コード内の実行されるステートメントまたは分岐の割合を追跡します。単体テストとコード カバレッジを使用して CalculateFibonacci() 関数を分析する方法を示す実践的な例。
Golang アーキテクチャの単体テストとコード カバレッジ
はじめに
単体テストは、コードの精度と堅牢性を確保するために非常に重要です。 Go アプリケーションに単体テストとコード カバレッジを実装すると、コードの品質と保守性が向上します。
単体テスト
Goのtesting
パッケージを使用する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 パッケージ 🎜🎜rrreee🎜🎜実際的なケース🎜🎜 与えられた正の整数のフィボナッチを計算する単純な <code>CalculateFibonacci()
関数を考えてみましょう。 🎜🎜🎜単体テスト🎜🎜rrreee🎜🎜コードカバレッジ🎜🎜rrreee🎜 go test -cover
コマンドを実行すると、コード カバレッジ レポートを生成できます。 🎜以上がgolang フレームワーク アーキテクチャはどのように単体テストとコード カバレッジを実現するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。