golang测试笔记 | 青训营笔记

59 阅读1分钟

这是我参与「第五届青训营 」伴学笔记创作活的第1天,今天主 要分享一下关于go语言工程实践测试的内容。 测试分为回归测试、集成测试和单元测试。 单元测试可以保证质量和提升效率。 单元测试所有测试文件以_test.go结尾,func TestXxx(*testing.T)

例如 文件和待测函数文件在同一个文件夹中 初始化逻辑放在TestMain中 Go 中的测试函数以 Test 开头,并将 *testing.T 作为唯一形参。 在大多数情况下,单元测试会被命名为 Test[NameOfFunction]。 testing 软件包提供了与测试工作流交互的工具,例如 t.Errorf,它会通过在控制台上显示错误消息来指示测试失败。 vscode 和 goland 直接使用快捷键 e.g


import "strconv"


func Fooer() string {
 return "Foo"}

这里的测试文件可以这么写

package main
    import "testing"
    func TestFooer(t *testing.T) {
        result := Fooer()
        if result != "Foo" {
           t.Errorf("Result was incorrect, got: %s, want: %s.", result, "Foo")
        }
    }

然后进行 测试 可以使用开源equal包实现测试 比如 assert.Equal()

单元测试覆盖率,即测试代码行和总代码行比值 一般覆盖率50% - 60%, 较高覆盖率80% 测试分支相互独立、全面覆盖。 测试单元粒度足够小

单元测试 - 依赖 要求 幂等, 稳定 Mock 为一个函数打桩,可以不依赖本地文件 使用Monkey包进行打桩,实现 monkey.Patch打桩, monkey.Unpatch 解除打桩

基准测试框架 优化代码需要对当前代码进行分析,内置测试框架提供基准测试能力 Benchmark开头