>백엔드 개발 >Golang >Golang 단위 테스트에서 적용 범위 도구를 사용하는 방법은 무엇입니까?

Golang 단위 테스트에서 적용 범위 도구를 사용하는 방법은 무엇입니까?

WBOY
WBOY원래의
2024-06-02 15:55:01941검색

go 단위 테스트에서 적용 범위를 측정하려면 go test -cover 명령을 사용하고 -cover 또는 -coverprofile 옵션을 지정하여 결과를 생성하세요. -covermode 옵션은 적용 범위 모드(set, count 또는omic)를 설정합니다. 실제 사례에서는 커버리지 구성 파일과 go 도구 커버 명령을 사용하여 테스트를 작성하고 커버리지 보고서를 생성하는 방법을 보여줍니다.

如何在 Golang 单元测试中使用覆盖工具?

Golang 단위 테스트에서 적용 범위를 테스트하기 위해 적용 범위 도구를 사용하는 방법

적용 범위 도구는 코드에서 테스트되지 않은 부분을 식별하는 데 도움이 되므로 단위 테스트에서 매우 중요합니다. 이는 코드의 품질과 신뢰성을 보장하는 데 중요합니다. Golang에서는 go test -cover 명령을 사용하여 단위 테스트의 적용 범위를 측정할 수 있습니다. go test -cover 命令来测量单元测试中的覆盖率。

安装覆盖工具

要在 Golang 中使用覆盖工具,您需要安装它。您可以使用以下命令进行安装:

go install golang.org/x/tools/cmd/cover

测量覆盖率

要测量单元测试的覆盖率,请使用 go test 命令并指定 -cover 标志。该标志随后可以接受以下值:

  • -cover:显示覆盖结果,包括未覆盖的行、文件和包。
  • -coverprofile=profile.out:将覆盖结果写入指定的文件中。这对于进一步分析或与其他工具一起使用很有用。
  • -covermode=mode:设置覆盖模式。可接受的值包括:

    • set:使用 set 模式报告覆盖情况。它将为每个被覆盖的代码行分配一个计数器,并在测试完成后生成报告。
    • count:使用 count 模式报告覆盖情况。它将为每个被覆盖的代码行分配一个 boolean 值,并在测试完成后生成报告。
    • atomic:使用原子计数模式报告覆盖情况。它将为每个被覆盖的代码行分配一个 int64 计数器,并在测试完成后生成报告。

实战案例

以下是一个演示如何测量 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
🎜🎜Measuring Coverage🎜🎜🎜단위 테스트의 적용 범위를 측정하려면 go test 명령을 사용하고 -cover를 지정하세요. 깃발 . 그러면 이 플래그는 다음 값을 허용할 수 있습니다. 🎜
  • 🎜-cover🎜: 발견되지 않은 행, 파일 및 패키지를 포함하여 적용 범위 결과를 표시합니다.
  • 🎜-coverprofile=profile.out🎜: 커버리지 결과를 지정된 파일에 씁니다. 이는 추가 분석이나 다른 도구와 함께 사용하는 데 유용합니다.
  • 🎜🎜-covermode=mode🎜: 커버리지 모드를 설정합니다. 허용되는 값은 다음과 같습니다. 🎜
    • 🎜set🎜: 적용 범위를 보고하려면 설정 모드를 사용하세요. 해당 코드의 각 줄에 카운터를 할당하고 테스트가 완료된 후 보고서를 생성합니다.
    • 🎜count🎜: 범위를 보고하려면 카운트 모드를 사용하세요. 해당 코드의 각 줄에 부울 값을 할당하고 테스트가 완료된 후 보고서를 생성합니다.
    • 🎜atomic🎜: 원자 계산 모드를 사용하여 범위를 보고합니다. 각 적용 코드 줄에 int64 카운터를 할당하고 테스트가 완료된 후 보고서를 생성합니다.
🎜🎜실용 사례🎜🎜🎜다음은 Golang 단위 테스트에서 적용 범위를 측정하는 방법을 보여주는 간단한 예입니다: 🎜🎜🎜main.go🎜🎜rrreee🎜🎜 main_test .go🎜🎜rrreee🎜커버리지 보고서를 생성하려면 명령줄에서 다음 명령을 실행하세요. 🎜rrreee🎜 이렇게 하면 coverage.out 파일에 커버리지 보고서가 생성됩니다. go tool Cover 명령을 사용하여 보고서를 볼 수 있습니다. 🎜rrreee🎜 이렇게 하면 포함되지 않은 줄과 파일을 보여주는 HTML 보고서가 브라우저에서 열립니다. 🎜

위 내용은 Golang 단위 테스트에서 적용 범위 도구를 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.