zoukankan      html  css  js  c++  java
  • Go语言Test功能测试函数详解

    Go语言的 testing 包提供了三种测试方式,分别是单元(功能)测试、性能(压力)测试和覆盖率测试。

    单元(功能)测试

    在同一文件夹下创建两个Go语言文件,分别命名为 demo.go 和 demt_test.go,如下图所示:


    具体代码如下所示:

    demo.go:

    1. package demo
    2. // 根据长宽获取面积
    3. func GetArea(weight int, height int) int {
    4. return weight * height
    5. }

    demo_test.go:

    1. package demo
    2. import "testing"
    3. func TestGetArea(t *testing.T) {
    4. area := GetArea(40, 50)
    5. if area != 2000 {
    6. t.Error("测试失败")
    7. }
    8. }

    执行测试命令,运行结果如下所示:

    PS D:code> go test -v
    === RUN   TestGetArea
    --- PASS: TestGetArea (0.00s)
    PASS
    ok      _/D_/code       0.435s

    性能(压力)测试

    将 demo_test.go 的代码改造成如下所示的样子:

    1. package demo
    2. import "testing"
    3. func BenchmarkGetArea(t *testing.B) {
    4. for i := 0; i < t.N; i++ {
    5. GetArea(40, 50)
    6. }
    7. }

    执行测试命令,运行结果如下所示:

    PS D:code> go test -bench="."
    goos: windows
    goarch: amd64
    BenchmarkGetArea-4      2000000000               0.35 ns/op
    PASS
    ok      _/D_/code       1.166s

    上面信息显示了程序执行 2000000000 次,共耗时 0.35 纳秒。

    覆盖率测试

    覆盖率测试能知道测试程序总共覆盖了多少业务代码(也就是 demo_test.go 中测试了多少 demo.go 中的代码),可以的话最好是覆盖100%。

    将 demo_test.go 代码改造成如下所示的样子:

    1. package demo
    2. import "testing"
    3. func TestGetArea(t *testing.T) {
    4. area := GetArea(40, 50)
    5. if area != 2000 {
    6. t.Error("测试失败")
    7. }
    8. }
    9. func BenchmarkGetArea(t *testing.B) {
    10. for i := 0; i < t.N; i++ {
    11. GetArea(40, 50)
    12. }
    13. }

    执行测试命令,运行结果如下所示:

    PS D:code> go test -cover
    PASS
    coverage: 100.0% of statements
    ok      _/D_/code       0.437s

  • 相关阅读:
    MO 中的imagelayer
    GDAL之OGR入门(转载)
    OGR体系结构
    C++与C# 以及指针
    如何用C#编程实现动态生成Word文档并填充数据?
    C++的类与C#的类[zt]
    arcmap vba 实现“卫星立体测图”高度字段值的计算,今天的一点小成就
    lib 和 dll from baidu
    ping and netstat
    Visual Basic6.0 中的类模块和标准模块
  • 原文地址:https://www.cnblogs.com/ithubb/p/14440459.html
Copyright © 2011-2022 走看看