欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 资讯 > go单元测试和基准测试

go单元测试和基准测试

2025/1/29 13:49:11 来源:https://blog.csdn.net/hust_joker/article/details/145370116  浏览:    关键词:go单元测试和基准测试

1、单元测试和基准测试

单元测试和基准测试代码开发中的重要环节,良好的单元测试和基准测试,能提升开发质量,对整体开发有非常重要的重要,下面介绍单元测试和基准测试的写法。

2、单元测试和基准测试写法

以排序基本排序算法,选择和插入为例介绍,整体代码目录如图所示
创建sort.go和对象sort_test.go
在这里插入图片描述
在sort.go中增加函数InsertSort和SelectSort

package mainfunc SeletSort(a []int) {for i := 0; i < len(a)-1; i++ {for j := i + 1; j < len(a); j++ {if a[j] < a[i] {a[j], a[i] = a[i], a[j]}}}
}func InsertSort(a []int) {for j := 1; j < len(a); j++ {for i := j; i > 0 && a[i] < a[i-1]; i-- {a[i], a[i-1] = a[i-1], a[i]}}}

单元测试需要以Test为前缀+待测试函数,在sort_test.go增加TestSelectSort函数:

func TestSelectSort(t *testing.T) {testCases := []struct {input    []intexpected []int}{{input:    []int{8, 12, 3, 1, 4, 5},expected: []int{1, 3, 4, 5, 8, 12},},{input:    []int{8, 13, 0, 9, 8, 7, 6},expected: []int{0, 6, 7, 8, 8, 9, 13},},{input:    []int{10, 9, 8, 7, 6, 5, 4},expected: []int{4, 5, 6, 7, 8, 9, 10},},{input:    []int{1, 2, 3, 6, 5, 4},expected: []int{1, 2, 3, 4, 5, 6},},{input:    []int{7, 7, 7, 9, 9, 9, 9, 6, 6, 6},expected: []int{6, 6, 6, 7, 7, 7, 9, 9, 9, 9},},}for i := 0; i < len(testCases); i++ {SeletSort(testCases[i].input)if !compareSlice(testCases[i].input, testCases[i].expected) {t.Errorf("Test case %d: Expected slice %v but received error %v", i+1, testCases[i].expected, testCases[i].input)}}}

基准测试以Benchmark+待测函数,分别添加BenchmarkSelectSort和BenchmarkInsertSort

func BenchmarkInsertSort(b *testing.B) {for i := 0; i < b.N; i++ {testCases := []struct {input    []intexpected []int}{{input:    []int{8, 12, 3, 1, 4, 5},expected: []int{1, 3, 4, 5, 8, 12},},{input:    []int{8, 13, 0, 9, 8, 7, 6},expected: []int{0, 6, 7, 8, 8, 9, 13},},{input:    []int{10, 9, 8, 7, 6, 5, 4},expected: []int{4, 5, 6, 7, 8, 9, 10},},{input:    []int{1, 2, 3, 6, 5, 4},expected: []int{1, 2, 3, 4, 5, 6},},{input:    []int{7, 7, 7, 9, 9, 9, 9, 6, 6, 6},expected: []int{6, 6, 6, 7, 7, 7, 9, 9, 9, 9},},}for i := 0; i < len(testCases); i++ {InsertSort(testCases[i].input)}}
}func BenchmarkSelectSort(b *testing.B) {for i := 0; i < b.N; i++ {testCases := []struct {input    []intexpected []int}{{input:    []int{8, 12, 3, 1, 4, 5},expected: []int{1, 3, 4, 5, 8, 12},},{input:    []int{8, 13, 0, 9, 8, 7, 6},expected: []int{0, 6, 7, 8, 8, 9, 13},},{input:    []int{10, 9, 8, 7, 6, 5, 4},expected: []int{4, 5, 6, 7, 8, 9, 10},},{input:    []int{1, 2, 3, 6, 5, 4},expected: []int{1, 2, 3, 4, 5, 6},},{input:    []int{7, 7, 7, 9, 9, 9, 9, 6, 6, 6},expected: []int{6, 6, 6, 7, 7, 7, 9, 9, 9, 9},},}for i := 0; i < len(testCases); i++ {SeletSort(testCases[i].input)}}
}

3.测试

go test 或者go test -v测试单元测试
在这里插入图片描述
单元测试某个函数
在这里插入图片描述
基准测试
在这里插入图片描述
基准测试某个函数
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com