zoukankan      html  css  js  c++  java
  • (四十)golang--单元测试

    传统的测试:

    package main
    
    import (
        "fmt"
    )
    
    func addUpper(n int) int {
        res := 0
        for i := 0; i <= n; i++ {
            res += i
        }
        return res
    }
    
    func main() {
        res := addUpper(10)
        if res != 55 {
            fmt.Printf("错误,真实值:%v,期望值:%v", res, 55)
        } else {
            fmt.Printf("正确,真实值:%v,期望值:%v", res, 55)
        }
    
    }

    存在问题:(1)需要修改main函数,如果程序正在运行,则需要停止程序;(2)需要测试多个函数时,步骤较为繁琐;

    单元测试:(1)确保每个函数都是可运行的,并且运行结果都是正确的;(2)确保写出来的代码性能是好的;

    利用go中的testing包:测试以TestXxx开头的函数,注意第一个X是大写的。

    测试的整体流程图:

    具体目录:

    main.go

    package main
    
    func main() {
    
    }

    pro.go

    package utils
    
    func addUpper(n int) int {
        res := 0
        for i := 0; i <= n; i++ {
            res += i
        }
        return res
    }
    
    func sub(n1 int, n2 int) int {
        return n1 - n2
    }

    add_test.go

    package utils
    
    import (
        "fmt"
        "testing"
    )
    
    func TestAddUpper(t *testing.T) {
        res := addUpper(10)
        if res != 55 {
            //程序错输,则退出,并输出日志
            t.Fatalf("AddUpper(10)执行错误,期望值=%v,输出值=%v", 55, res)
        }
        //如果正确,输出日志
        t.Logf("AddUpper(10)执行正确。。。")
    }
    
    func TestHello(t *testing.T) {
        fmt.Println("hello world")
    }

    sub_test.go

    package utils
    
    import "testing"
    
    func TestSub(t *testing.T) {
        res := sub(20, 10)
        if res != 10 {
            //程序错输,则退出,并输出日志
            t.Fatalf("sub(20,10)执行错误,期望值=%v,输出值=%v", 10, res)
        }
        //如果正确,输出日志
        t.Logf("sub(20,10)执行正确。。。")
    }

    最后结果:

    单元测试注意事项:

    (1)测试用例函数必须以TestXxx命令,其中第一个X大写;

    (2)测试用例文件必须以_test.go结尾;

    (3)TestXxx(t *testing.T)形参类型必须是*testing.T;

    (4)一个测试用例文件中可以有多个测试用例;

    (5)运行测试用例指令:

      go test (运行正确无日志,错误输出日志)

      go test -v (不管是否正确,都输出日志)

    (6)当出现错误时,可以使用t.Fatalf来格式化输出错误信息,并退出程序;

    (7)t.logf()可以输出相应的日志;

    (8)PASS表示测试用例通过,FAIL表示失败;

    (9)测试单个文件:go test -v add_test.go pro.go

    (10)测试单个方法:go test -v  -test.run TestAddUpper

  • 相关阅读:
    使用U盘做最官方纯净的高压缩级别的w10系统,享受急速5秒开机
    Nginx设置浏览器缓存
    --with-http_sub_module模块
    --with-http_random_index_module模块
    --with-http_stub_status_module模块
    Nginx常见问题
    secure_link_module模块
    nginx编译安装新模块
    使用Ubuntu搭建Web服务器
    [BJDCTF 2nd]假猪套天下第一
  • 原文地址:https://www.cnblogs.com/xiximayou/p/11942842.html
Copyright © 2011-2022 走看看