go 单元测试和benchmark测试

喜欢ヅ旅行 2022-05-24 09:40 445阅读 0赞

Go语言的表格驱动测试

main.go

  1. package main
  2. import (
  3. "fmt"
  4. )
  5. func isOneBitCharacter(bits []int) bool {
  6. var result bool
  7. var idx int
  8. for idx = 0; idx < len(bits); {
  9. if bits[idx] == 0 {
  10. idx++
  11. result = true
  12. } else {
  13. idx = idx + 2
  14. result = false
  15. }
  16. }
  17. return result
  18. }
  19. func main() {
  20. var bits = []int{1, 1, 1, 0}
  21. fmt.Println(isOneBitCharacter(bits))
  22. }

main_test.go

  1. package main
  2. import "testing"
  3. func Benchmark_isOneBitCharacter(b *testing.B) {
  4. type args struct {
  5. bits []int
  6. }
  7. tests := struct {
  8. name string
  9. args args
  10. want bool /*预期结果*/
  11. }{
  12. "1", args{[]int{1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}}, false}
  13. for idx := 0; idx < b.N; idx++ {
  14. b.Run(tests.name, func(b *testing.B) {
  15. if got := isOneBitCharacter(tests.args.bits); got != tests.want {
  16. b.Errorf("isOneBitCharacter() = %v, want %v", got, tests.want)
  17. }
  18. })
  19. }
  20. }
  21. func Test_isOneBitCharacter(t *testing.T) {
  22. type args struct {
  23. bits []int
  24. }
  25. tests := []struct {
  26. name string
  27. args args
  28. want bool /*预期结果*/
  29. }{
  30. // TODO: Add test cases.
  31. {
  32. "1", args{[]int{1, 1, 1, 0}}, false},
  33. {
  34. "2", args{[]int{1, 1, 0, 0}}, true},
  35. {
  36. "3", args{[]int{1, 0, 0}}, true},
  37. {
  38. "4", args{[]int{}}, false},
  39. }
  40. for _, tt := range tests {
  41. t.Run(tt.name, func(t *testing.T) {
  42. if got := isOneBitCharacter(tt.args.bits); got != tt.want {
  43. t.Errorf("isOneBitCharacter() = %v, want %v", got, tt.want)
  44. }
  45. })
  46. }
  47. }

引用

https://blog.csdn.net/x356982611/article/details/80443252

发表评论

表情:
评论列表 (有 0 条评论,445人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Go基准测试Benchmark

    > Go语言自带了一个强大的测试框架,其中包括基准测试(Benchmark)功能,基准测试用于测量和评估一段代码的性能。 我们可以通过在Go的测试文件中编写特殊格式的函数来创

    相关 go语言单元测试

    不写测试的开发不是好程序员。我个人非常崇尚TDD(Test Driven Development)的,然而可惜的是国内的程序员都不太关注测试这一部分。 这篇文章主要介绍下在Go

    相关 go 单元测试go-sqlmock

    目录 1.安装 2.举例 3.参考 在数据库应用开发过程中,会在数据库上执行各种 SQL 语句。 在做单元测试的时候,一般不会与实际数据库交互,这时

    相关 Go单元测试技巧

    单元测试(Unit Test) Go语言原生支持测试工具`go test`,省去了各种各样测试框架的学习成本。说来也惭愧,写代码这么些年,也从来没有给自己的代码写过单元测

    相关 go单元测试介绍

    一 问题引出 在我们工作中,我们会遇到这样的情况,就是去确认一个函数,或者一个模块的结果是否正确。 例如,我们会遇到测试下面函数是否正确。 func addU