go test -cover コマンドを使用して Go 単体テストでカバレッジを測定し、-cover または -coverprofile オプションを指定して結果を生成します。 -covermode オプションはカバレッジ モード (セット、カウント、またはアトミック) を設定します。実際のケースでは、カバレッジ設定ファイルと go ツールの cover コマンドを使用してテストを作成し、カバレッジ レポートを生成する方法を示します。
Golang 単体テストでカバレッジ ツールを使用してカバレッジをテストする方法
カバレッジ ツールは、コードの未テスト部分を特定するのに役立つため、単体テストにおいて非常に重要です。これは、コードの品質と信頼性を確保するために重要です。 Golang では、go test -cover
コマンドを使用して単体テストのカバレッジを測定できます。 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
カバレッジツールのインストール
🎜🎜Golangでカバレッジツールを使用するには、カバレッジツールをインストールする必要があります。次のコマンドを使用してインストールできます: 🎜go tool cover -html=coverage.out
go test
コマンドを使用し、-cover
を指定します。フラグ 。このフラグは次の値を受け入れることができます: 🎜coverage.out
ファイルにカバレッジ レポートが作成されます。 go tool cover
コマンドを使用してレポートを表示できます: 🎜rrreee🎜これにより、ブラウザで HTML レポートが開き、カバーされていない行とファイルが表示されます。 🎜以上がGolang 単体テストでカバレッジ ツールを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。