zoukankan      html  css  js  c++  java
  • golang单元测试简述

      Golang中内置了对单元测试的支持,不需要像Java一样引入第三方Jar才能进行测试,下面将分别介绍Golang所支持的几种测试;

    一、测试类型

      Golang中单元测试有功能测试、基准测试、示例测试或称示例函数三种;
      功能测试必须以TestXXX函数名出现,基准测试必须以BenchmarkXXX函数名出现,示例函数必须以ExampleXXX函数名出现。

    //功能测试
    func TestXXX(t *testing.T){
    }
    
    //基准测试
    func BenchmarkXXX(b * testing.B){
    }
    
    //示例函数
    func ExampleXXX(){
    }
    

    二、功能测试

      函数名:TestXxx,以Test为前缀的功能测试函数
      参数类型:*testing.T

      功能函数:

    func(a, b int) Mul {
      return b * b
    }
    

    测试函数:

    func TestMul(t *testing.T) {
    arr := [...]int{2, 4, 6}
        expected := []int{8, 12}
    for j := 0; j < 2; j++ {
           result := Add(arr[j], arr[j+1])
    	   if result != expected[j] {
    		 //失败后停止后序逻辑
    		  t.Fatalf("input is %d, the expected is %d, the actual %d", arr[j], expected[j], result)
    		 //失败后继续执行后序逻辑
    		//t.Errorf("input is %d, the expected is %d, the actual %d", arr[j], expected[j], result)
    	   }
        }
    } 
    

    二、基准测试

      用于对程序功能进行可定量、可对比的性能测试;
      函数名:BenchmarkXxx,以Test为前缀的测试功能函数
      参数类型:*testing.B

    func BenchmarkMul(b *testing.B) {
    for i := 0; i < b.N; i++ {
    	Mul(i, i)
        }
    }
    

    执行结果:

    goos: windows
    goarch: amd64
    pkg: solinx.co/LCache/test
    BenchmarkMul-12    	1000000000	         0.323 ns/op
    PASS
    coverage: 100.0% of statements
    ok      solinx.co/LCache/test   0.499s
    

    结果分析:
    执行执行环境:windows
    架构:amd64
    包路径
    BenchmarkMul-12:总共12个逻辑cpu
    函数执行时间 0.499秒
    测试代码覆盖率:100%

    三、示例测试

    func ExampleMul() {
    a := Mul(2, 2)
        fmt.Println(a)
    //Output: 41
    }
    

      输出内容到标准输出,参数没有限制;go test执行时会监测实际输出与注释中的期望结果是否一致,一致时测试通过,不一致则测试失败;

    通过:

    失败:

    === RUN   ExampleMul
    --- FAIL: ExampleMul (0.00s)
    got:
    4
    want:
    41
    FAIL
    coverage: 100.0% of statements
    

    得到了:4,需要的是:41 测试失败;

    四、go test 参数介绍

      -count: 设置执行测试函数的次数, 默认 1
      -run: 执行功能测试函数, 可正则匹配
      -bench: 执行基准测试函数, 可正则匹配
      -benchtime: 基准测试最大探索时间
      -parallel: 设置功能测试函数最大并发执行数
      -v: 是展示测试过程信息
      -cover:显示测试代码覆盖率
      -list : 列出所匹配的测试函数,不执行

    执行与Test匹配的测试函数

    go test -run Test
    

    文章首发地址:Solinx
    https://mp.weixin.qq.com/s/nqnXiOT_CfD6qWeE6xsrhw

  • 相关阅读:
    php ReflectionObject类
    is_callable
    Zend Framework: Accessing Request, Response & Router Object from anywhere
    (转)zend异常处理
    call_user_func
    zend framework基础教程6—视图
    php func_get_arg
    zend framework基础教程3—创建index.php
    【算法02】3种方法求解斐波那契数列
    【算法01】寻找丑数
  • 原文地址:https://www.cnblogs.com/softlin/p/12364471.html
Copyright © 2011-2022 走看看