go testing

golang testing包测试用例和性能测试

发布时间: 2016-01-10 浏览次数:2802 分类: GO

如何保证代码的质量和可靠性?Golang自带了testing包可用来实现测试用例和性能测试.
如下为例,新建gotest项目目录,编写两个文件bubblesort.go和bubblesort_test.go
bubblesort.go

 
  1. package gotest
  2.  
  3. //from small to big
  4. func BubbleSort(num []int) {
  5. flag := false
  6. for i := 0; i < len(num)-1; i++ {
  7. flag = false
  8. for j := 0; j < len(num)-1-i; j++ {
  9. if num[j] > num[j+1] {
  10. num[j], num[j+1] = num[j+1], num[j]
  11. flag = true
  12. }
  13. }
  14. if !flag {
  15. break
  16. }
  17. }
  18. return
  19. }

bubblesort_test.go
 
  1. package gotest
  2.  
  3. import (
  4. "testing"
  5. )
  6.  
  7. func TestBubbleSort(t *testing.T) {
  8. values := []int{5, 4, 3, 2, 1}
  9. BubbleSort(values)
  10. if values[0] != 1 || values[1] != 2 || values[2] != 3 || values[3] != 4 ||
  11. values[4] !=5 {
  12. t.Error("BubbleSort() failed. Got", values, "Expected 1 2 3 4 5")
  13. }
  14. }
  15.  
  16. func BenchmarkBubbleSort(b *testing.B) {
  17. for i := 0; i < b.N; i++ {
  18. values := []int{5, 4, 3, 2, 1}
  19. BubbleSort(values)
  20. }
  21. }

golang测试用例使用原则:
  • 文件名必须是_test.go结尾的,这样在执行go test的时候才会执行到相应的代码
  • 你必须import testing这个包
  • 所有的测试用例函数必须是Test开头
  • 测试用例会按照源代码中写的顺序依次执行
  • 测试函数TestXxx()的参数是testing.T,我们可以使用该类型来记录错误或者是测试状态
  • 测试格式:func TestXxx (t *testing.T),Xxx部分可以为任意的字母数字的组合,但是首字母不能是小写字母[a-z],例如Testintdiv是错误的函数名。
  • 函数中通过调用testing.T的Error, Errorf, FailNow, Fatal, FatalIf方法,说明测试不通过,调用Log方法用来记录测试的信息。

golang压力测试使用原则:

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

如何运行测试用例?在项目目录下运行:go test

  
  1. PASS
  2. ok test/gotest 0.002s

显示详细测试通过和log信息:go test -v

  
  1. === RUN TestBubbleSort
  2. --- PASS: TestBubbleSort (0.00s)
  3. PASS
  4. ok test/gotest 0.002s

查看测试覆盖率:go test -cover

  
  1. $ go test -cover
  2. PASS
  3. coverage: 90.0% of statements
  4. ok test/gotest 0.001s

如果运行压力测试?执行: go test -test.bench=".*"

  
  1. $ go test -test.bench=".*"
  2. PASS
  3. BenchmarkBubbleSort-4 30000000 45.8 ns/op
  4. ok test/gotest 1.424s

还可以利用go tool pprof工具生产性能报告.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值