Go 语言工程实践之测试 | 青训营笔记

75 阅读1分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天

CSP

CSP = Communicating Sequential Processes

image.png

队列:从入先出

image.png

  • 无缓冲通道:同步通道
  • 有缓冲通道:生产消费模式

协程的同步

func ManyGoWait() {
    war wg sync.WaitGroup
    // 计数器添加 5
    wg.Add(5)
    for i := 0; i < 5; i++ {
        go func(j int) {
            // 计数器减 1
            defer wg.Done()
            // do something
        }(i)
    }
    // 直到计数器为 0
    wg.Wait()
}

依赖管理

image.png

image.png

image.png

image.png

image.png

image.png

Proxy 会缓冲上面的 Package

image.png

先从 Proxy1 选,没有再选择 Proxy 2,最后再选择 Direct

image.png

注意:答案不是 C,而是选择最低的兼容版本。

image.png

测试

可以分为

  • 单元测试
  • 回归测试
  • 集成测试

单元测试

image.png

GO

单元测试-规则

  • 所有测试文件以 _test.go 结尾
  • func TestXxx(*testing.T)
  • 初始化逻辑放到 TestMain

例子

func Hello() string {
    return "Jerry"
}

func TestHello(t *testing.T) {
    output := Hello()
    expectOutput := "Tom"
    if output != expectOutput {
        t.Errorf("Expected %s do not match actual %s", expectOutput, output
    }
}

运行测试样例:

go test [flags][packages]

image.png

image.png

image.png

image.png