Go 功能测试与性能测试
2024-08-29 04:36:44
1、功能测试
calcTriangle.go
// 需要被测试的函数
func calcTriangle(a, b int) int {
return int(math.Sqrt(float64(a*a + b*b)))
}
calcTriangle_test.go // 注意测试文件必须以_test结尾
package main import "testing"
// 注意测试函数必须以 Test开头
func TestTriangle(t *testing.T) {
// 表格驱动测试
tests := []struct {a, b, c int} {
{3,4,5},
{5,12,13},
{8,15,17},
{12,35,37},
{30000,40000,50000},
}
for _, tt := range tests {
if actual := calcTriangle(tt.a, tt.b); actual != tt.c {
t.Errorf("calcTriangle(%d, %d); got %d; expected %d", tt.a, tt.b, actual, tt.c)
}
}
}
测试执行方法
1、IDE中直接执行
2、命令行 go test .
代码覆盖率测试
命令行执行:
1、go test -coverprofile=c.out 生成覆盖率数据
2、go tool cover -html c.out 生成html页面展示
2、性能测试
nonrepeating.go
package main import "fmt" func lengthOfNonRepeatingSubStr(s string) int {
lastOccurred := make(map[rune]int)
start := 0
maxLength := 0
for i, ch := range []rune(s) {
if lastI, ok := lastOccurred[ch]; ok && lastI >= start {
start = lastI + 1
}
if i - start + 1 > maxLength {
maxLength = i - start + 1
}
lastOccurred[ch] = i
}
return maxLength
} func main() {
fmt.Println(
lengthOfNonRepeatingSubStr("abcabcbb"))
fmt.Println(
lengthOfNonRepeatingSubStr("bbbbb"))
fmt.Println(
lengthOfNonRepeatingSubStr("pwwkew"))
fmt.Println(
lengthOfNonRepeatingSubStr(""))
fmt.Println(
lengthOfNonRepeatingSubStr("b"))
fmt.Println(
lengthOfNonRepeatingSubStr("abcdef"))
fmt.Println(
lengthOfNonRepeatingSubStr("这里是慕课网"))
fmt.Println(
lengthOfNonRepeatingSubStr("一二三二一"))
fmt.Println(
lengthOfNonRepeatingSubStr(
"黑化肥挥发发灰会花飞灰化肥挥发发黑会飞花"))
}
nonrepeating_test.go
package main import "testing" // 功能测试
func TestSubstr(t *testing.T) {
tests := []struct{s string; ans int} {
{"abcabcbb", 3},
{"bbbbb", 1},
{"pwwkew", 3},
{"", 0},
{"b", 1},
{"abcdef", 6},
{"这里是慕课网", 6},
{"一二三二一", 3},
{"黑化肥挥发发灰会花飞灰化肥挥发发黑会飞花", 8},
} for _, tt := range tests {
if actual := lengthOfNonRepeatingSubStr(tt.s); actual != tt.ans {
t.Errorf("got %d for input %s; expected %d", actual, tt.s, tt.ans)
}
}
} // 性能测试
func BenchmarkSubstr(b *testing.B) {
s := "黑化肥挥发发灰会花飞灰化肥挥发发黑会飞花"
ans := 8 // b.N 自动判断测试的次数
for i := 0; i < b.N ; i++ {
actual := lengthOfNonRepeatingSubStr(s)
if actual != ans {
b.Errorf("got %d for input %s; expected %d", actual, s, ans)
}
}
}
测试执行方法
1、IDE中直接执行
2、命令行 go test -bench .
3、go test -bench . -cpuprofile=cpu.out , go tool pprof 生成SVG图形
最新文章
- Ubuntu 16.04安装QQ国际版图文详细教程
- android-studio-bundle-141.1980579-windows download Site
- C++拷贝构造函数
- 为什么V8引擎这么快?
- mysql -B 恢复与不加
- HDU 4417:Super Mario(主席树)
- Mapnik 编译安装过程
- linux jmail乱码
- extSourceStat_7Day_Orders.php
- 深入理解JAVA多态原理
- Android(java)学习笔记252:ContentProvider使用之内容观察者01
- 安卓状态栏通知Status Bar Notification
- ZTESoft 持续集成 编年史 之 持续集成建设---自主研发(总括)
- java.lang.NoClassDefFoundError: com.umeng.analytics.MobclickAgent
- 201521123089 《Java程序设计》第1周学习总结
- 怎么让self.view的Y从navigationBar下面开始计算
- PHP 设置分页 可以直接引用 最下面有自己引用的方法和注释
- HashMap 和 ConcurrentHashMap比较
- js输出
- Ubuntu系统的安装(虚拟机) 并配置C/C++编译器
热门文章
- python3 - 使用__slots__限制实例属性
- Happy Necklace(矩阵快速幂)
- java图片二进制相互转换
- 关于微信小程序下拉出现三个小点
- event.preventDefault方法的使用
- Java实现单例模式的两种方式
- [JavaScript] this、call和apply详解
- Neighbor Discovery Protocol Address Resolution Protocol
- FW ImageMagick
- Linux下Ngnix及PHP重启命令