美文网首页
go语言函数测试

go语言函数测试

作者: 黎涛note | 来源:发表于2021-04-15 11:47 被阅读0次

go语言测试方法

测试split

package split

import "strings"

func Split(s, seq string) (result []string) {
    i := strings.Index(s, seq)
    for i>-1 {
        result = append(result, s[:i])
        s = s[i+len(seq):]
        //s = s[i+1:]
        i = strings.Index(s, seq)
    }
    result = append(result, s)
    return result
}

编写的测试函数

package split

import (
    "reflect"
    "testing"
)

//测试切片为长度为1的字符串时
func TestSplit(t *testing.T) {
    got := Split("a:b:c",":")
    want := []string{"a", "b", "c"}
    if !reflect.DeepEqual(got,want) {
        t.Errorf("go= %v, want= %v", got, want)
    }
}

//测试长度大于1的字符串切片
func TestMoreSplit(t *testing.T) {
    got := Split("abcd", "bc")
    want := []string{"a","d"}
    if !reflect.DeepEqual(got, want) {
        t.Errorf("got= %v, want= %v", got, want)
    }
}

//组合测试,多组测试
func TestSplitM(t *testing.T) {
    //定义测试用的结构体
    type test struct {
        input string
        seq string
        want []string
    }
    //测试用例使用Map进行存储
    tests := []test{
        {"a:b:c:d",":",[]string{"a","b","c","d"}},
        {"a:b:c",",",[]string{"a:b:c"}},
        {"abcd","bc",[]string{"a","d"}},
        {"我爱你","爱",[]string{"我","你"}},
    }
    //使用range循环测试每一个test用例
    for _,tc := range tests {
        got := Split(tc.input, tc.seq)
        if !reflect.DeepEqual(got, tc.want) {
            t.Errorf("got= %#v, want= %#v", got, tc.want)
        }
    }
}

//子测试
func TestSplitSample(t *testing.T) {
    type test struct{
        input string
        seq string
        want []string
    }

    tests := map[string]test{
        "simple seq" : {"a:b:c",":",[]string{"a","b","c"}},
        "wrong seq" : {"a:b:c",",",[]string{"a:b:c"}},
        "more seq" : {"abcd","bc",[]string{"a","d"}},
        "leading seq" : {"我爱你","爱",[]string{"我","你"}},
    }

    for name,tc := range tests {
        got := Split(tc.input,tc.seq)
        if !reflect.DeepEqual(got, tc.want) {
            t.Errorf("name= %#v, got= %#v, want= %#v", name, got ,tc.want)
        }
    }
}


func TestSplit2(t *testing.T) {
    type test struct {
        input string
        seq string
        want []string
    }
    tests := map[string]test{
        "simple seq" : {"a:b:c",":",[]string{"a","b","c"}},
        "wrong seq" : {"a:b:c",",",[]string{"a:b:c"}},
        "more seq" : {"abcd","bc",[]string{"a","d"}},
        "leading seq" : {"我爱你","爱",[]string{"我","你"}},
    }

    for name,tc := range tests {
        t.Run(name, func(t *testing.T) {
            got := Split(tc.input, tc.seq)
            if !reflect.DeepEqual(got, tc.want) {
                t.Errorf("name= %#v, got= %#v, want= %#v", name, got ,tc.want)
            }
        })
    }
}

go 测试使用的命令

//go的测试命令
go test 执行所有的测试Test*方法
go test -v 执行所有测试方法,并查看每一个的测试执行
go test -v -run=*** 执行某一个测试用例
go test -cover 测试覆盖率
go test -cover -coverprofile=c.out 测试覆盖率,并将覆盖率写到文件c.out中
go tool cover -html=c.out 在html中显示覆盖率
image.png

相关文章

  • go语言函数测试

    go语言测试方法 测试split 编写的测试函数 go 测试使用的命令

  • Go语言之基准测试

    在Go语言中,提供了测试函数性能(CPU和Memory)的测试方法,基准测试。 基准测试主要用来测试CPU和内存的...

  • (四)go语言函数&参数传递

    go语言函数 基本语法 例子 go语言参数传递

  • go语言测试框架

    go语言内置的测试框架能够完成基本的功能测试,基准测试,和样本测试。 测试框架 go语言测试单元以包为单位组织,包...

  • GO学习笔记(17) -测试

    测试工具 —go test go test命令用于对Go语言编写的程序进行测试。 测试规范 测试文件必须为"_te...

  • 三、Go的函数

    三、Go的函数 Go语言最少有一个main()函数。 1、Go的函数定义: 2、函数参数 函数如果使用参数,该变量...

  • Go语言中的函数 为什么是一等公民

    关键点 Go语言中,支持: 普通函数 匿名函数 闭包 在Go语言中,函数属于一等公民(first-class)? ...

  • 09-Go语言函数

    函数 Go语言函数格式func 函数名称(形参列表)(返回值列表){函数语句} Go语言函数的类型没有返回值没有形...

  • Golang的Init函数和Main函数

    Init函数和main函数 go语言中的init函数用于包package初始化。该函数时go语言的一个重要特性in...

  • go单元测试和基准测试

    在*_test.go文件中,有三种类型的函数:测试函数、基准测试(benchmark)函数、示例函数。一个测试函数...

网友评论

      本文标题:go语言函数测试

      本文链接:https://www.haomeiwen.com/subject/dnjdlltx.html