1、测试的一些语法规则
- 文件必须以_test.go结尾
- 函数名以Test开头
- 应该用表格测试的方法
func TestTwoSum(t *testing.T) {
var data = []struct {
nums, result []int
target int
}{
{[]int{2, 7, 11, 15}, []int{0, 1}, 9},
{[]int{3, 2, 4}, []int{1, 2}, 6},
{[]int{3, 3}, []int{0, 1}, 6},
}
for _, tt := range data {
actual := twoSum(tt.nums, tt.target)
if len(actual) != len(tt.result) {
t.Errorf("expected %v ,actual get %v\n", tt.result, actual)
}
for i := 0; i < len(actual); i++ {
if actual[i] != tt.result[i] {
t.Errorf("expected %v ,actual get %v\n", tt.result, actual)
}
}
}
}
2、性能测试
- 函数名称以Benchmark开头
func BenchmarkTwoSum(b *testing.B) {
result := []int{8, 15}
b.ResetTimer()
for i := 0; i < b.N; i++ {
actual := twoSum([]int{3, 3, 9, 11, 23, 45, 12, 67, 98, 1, 2, 3, 5, 4, 6, 100, 78}, 198)
if len(actual) != len(result) {
b.Errorf("expected %v ,actual get %v\n", result, actual)
}
for i := 0; i < len(actual); i++ {
if actual[i] != result[i] {
b.Errorf("expected %v ,actual get %v\n", result, actual)
}
}
}
}
func twoSum(nums []int, target int) []int {
for i := range nums {
another := target - nums[i]
for j := i + 1; j < len(nums); j++ {
if nums[j] == another {
return []int{i, j}
}
}
}
return []int{}
}
3、可视化性能测试
- 进入到相应目录下面执行
go test -bench . -cpuprofile cpu.out - 使用这个工具查看cpu.out
go tool pprof cpu.out - 然后输入
web