MST

星途 面试题库

面试题:Go语言中如何使用内置工具计算代码覆盖率

在Go语言项目中,阐述使用内置工具计算代码覆盖率的步骤,并举例说明如何查看生成的覆盖率报告。
46.7万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
  1. 计算代码覆盖率步骤
    • 编写测试文件:为需要计算覆盖率的代码编写对应的测试文件,测试文件命名通常以_test.go结尾。例如,对于main.go文件,创建main_test.go。假设main.go中有一个函数Add
// main.go
package main

func Add(a, b int) int {
    return a + b
}

对应的main_test.go

// main_test.go
package main

import "testing"

func TestAdd(t *testing.T) {
    result := Add(2, 3)
    if result != 5 {
        t.Errorf("Add(2, 3) = %d; want 5", result)
    }
}
  • 执行测试并生成覆盖率文件:在项目根目录下,使用以下命令生成覆盖率文件coverage.out
go test -coverprofile=coverage.out
  1. 查看覆盖率报告
    • 文本形式查看:可以使用go tool cover命令以文本形式查看覆盖率报告:
go tool cover -func=coverage.out

执行上述命令后,会输出类似如下内容:

main.go:4:  Add  100.0%
total:     (statements)  100.0%
  • HTML形式查看:也可以生成HTML格式的覆盖率报告,便于直观查看代码中哪些部分被测试覆盖,哪些没有。使用以下命令:
go tool cover -html=coverage.out

执行该命令后,会自动在浏览器中打开一个HTML页面,页面会以不同颜色标识出代码的覆盖情况,绿色表示被覆盖的代码行,红色表示未被覆盖的代码行。