分享
  1. 首页
  2. 文章

Go语言-测试用例

二郎神六号 · · 5793 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

编写单元测试用例

  • 文件名必须以'_test.go'结尾
  • 必须import "testing"这个包
  • 测试用例会按照源代码中写的顺序依次执行
  • 测试函数'TestXxx(t *testing.T)'中的参数是‘testing.T’,我们可以用该类型来记录错误或者是测试状态
  • 测试格式:‘func TestXxx(t *testing.T)’,'Xxx'部分可以为任意的字母数字组合,但是首字母不能是小写字母[a-z]
  • 函数中通过调用'testing.T'的'Error'、'Errorf'、'FailNow'、'Fatal'、‘FatalIf’方法,说明测试用例不通过,调用''Log'方法用来记录测试的信息

编写压力测试

  • 压力测试用例必须遵循如下格式,其中XXX可以是任意字母数字的组合,但是首字母不能是小写字母
    func BenchmarkXXX(b *testing.a) {...}
  • go test 不会默认执行压力测试的函数,如果要执行压力测试需要带上参数。-test.bench,语法: -test.bench="test_name_regex" ,例如 go test -test.bench=".*"表示测试全部的压力测试函数
  • 在压力测试用例中,需要才循环体内使用testing.B.N,以使测试用例正常运行
  • 文件名也必须以_test.go结尾

单元测试用例

源码

 package gotest
 import(
 )
 func Add(a, b float64) float64 {
 return a + b
 }

测试用例

package gotest
import (
 "testing"
)
func Test_Add_1(t *testing.T) {
 if i := Add(6,2); i != 8 {
 t.Error("fail")
 } else {
 t.Log("pass")
 }
}
func Test_Add_2(t *testing.T) {
 if i := Add(6,2); i == 8 {
 t.Log("pass")
 } else {
 t.Error("fail")
 }
}

运行测试用例

 go test -v

测试用例执行结果

=== RUN Test_Add_1
--- PASS: Test_Add_1 (0.00s)
 gotest_test.go:11: pass
=== RUN Test_Add_2
--- PASS: Test_Add_2 (0.00s)
 gotest_test.go:17: pass
PASS
ok github.com/shadowsocks/shadowsocks-go/sample-config/gotest 0.001s

压力测试用例

源码

package gotest
import(
 "testing"
)
func Benchmark_Add(b *testing.B) {
 for i := 0; i < b.N ; i++ {
 Add(3,4)
 }
}
func Benchmark_TimeConsumingFunction(b *testing.B) {
 b.StopTimer() //调用该函数停止压力测试的时间计数
 //做一些初始化工作,这些时间不影响我们测试函数本身的性能
 b.StartTimer()
 for i := 0; i < b.N; i++ {
 Add(5,6)
 }
}

运行结果

Benchmark_Add-4 2000000000 0.38 ns/op
Benchmark_TimeConsumingFunction-4 2000000000 0.38 ns/op
PASS
ok github.com/shadowsocks/shadowsocks-go/sample-config/gotest 1.594s
第一条显示Benchmark_add-4执行了20亿次,每次执行时间为0.38纳秒
第二条也一样

有疑问加站长微信联系(非本文作者)

本文来自:51CTO博客

感谢作者:二郎神六号

查看原文:Go语言-测试用例

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
5793 次点击
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏