go语言中单元测试的加深版本

栏目: Go · 发布时间: 6年前

内容简介:基础知识:GO为我们提供了测试框架,go test,让我们能够很容易的进行单元测试。但必须遵守以下几点规则:

元测试

总结一些单元测试的相关类容以供以后进行学习与参考

基础知识:

GO为我们提供了测试框架,go test,让我们能够很容易的进行单元测试。

但必须遵守以下几点规则:

* 测试文件必须以_test.go结尾
* 单元测试文件名_test.go前面的部分最好是被测方法所在 go 文件的文件名。(不一样也可以运行go test,但是应该遵守统一的规范)
* 单元测试的函数必须以Test开头,是公开函数
* 测试函数必须接收一个指向testing.T类型的指针(依测试目的而定,如主要是测试性能,则用testing.B等),并且不能返回任何值。
* 函数名最好是Test+测试函数名(依测试类型而定,Benchmark等)。 `其中Bench开始的是压力测试`

若是遵循上述的几点规则,可以很容易些出一个测试环节

写一个简单的单元测试用例

add.go

package add

func Add(a, b int) int{
    return a+b
}

add_test.go

package add

import "testing"

func TestAdd(t *testing.T){
    if sum:=Add(1,2); sum!=3{
        t.Error("fail")//日志一般要写成f(x)=y, want z的形式
    } else {
        t.Log("success")
    }
}

go test -v即可看到测试结果
(这里有一点我踩过的小坑,当想指定测试文件的时候go test file_test.go会报错,因为需要后面还需要接上被测试的文件:go test file_test.go file.go)

只是一个最简单的基本测试。另一种测试方法叫做:表组测试。其实就是多个基本测试。

将上面test简单改造

package add

import "testing"

func TestAdd(t *testing.T){
    var tests = []struct{
        date []int
        want int
    }{
        {[]int{1, 2}, 3},
        {[]int{2, 5}, 7},
        {[]int{3, 9}, 11},
    }

    for _,v := range tests{
        if sum:=Add(v.date[0], v.date[1]); sum!=v.want{
            t.Errorf("Add(%d, %d) = %d, want %d", v.date[0], v.date[1], v.date[0]+v.date[1], v.want)
        } else {
            t.Log("success")
        }
    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

能量分析攻击

能量分析攻击

Stefan Mangard、Elisabeth Oswald、Thomas Popp / 科学出版社 / 2010-8 / 58.00元

《能量分析攻击》可以作为密码学、电子工程、信息安全等专业的教材,也可以供相关专业人员参考。能量分析攻击旨在通过分析密码设备的能量消耗这一物理特性来恢复设备内部的秘密信息,这种基于实现特性的密码分析对广泛应用的各类密码模块的实际安全性造成了严重威胁,《能量分析攻击》是关于能量分析攻击的综合性专著,系统阐述了能量分析攻击的基本原理、技术方法以及防御对策的设计与分析。一起来看看 《能量分析攻击》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试