文件结构:

math.go:待测试的包

math_test.go:单元测试

bench_test.go:压力测试

 

math.go

package main

func Add(a int, b int) int {
	return a + b
}

func Sub(a int, b int) int {
	return a - b
}

  

单元测试:

math_test.go

package main

import "testing"

func TestAdd(t *testing.T) {
	a := 10
	b := 20
	c := Add(a, b)
	if c != 30 {
		t.Fatalf("add func error, c = %d", c)
	}
	t.Logf("a = %d b = %d sum = %d\n", a, b, c)
}

func TestSub(t *testing.T) {
	a := 50
	b := 20
	c := Sub(a, b)
	if c != 30 {
		t.Fatalf("sub func error, c = %d", c)
	}
	t.Logf("a = %d b = %d sub = %d\n", a, b, c)
}

在文件所在的路径下,命令行执行

//go test -v    显示详细过程,也可以配合-run使用
//go test -run TestAdd 只测试TestAdd方法
//go test -run TestSub 只测试TestSub方法
go test 

  

压力测试:

bench_test.go

package main

import "testing"

//注意命名规范 Benchmark+首字母大写的方法名 参数固定
func BenchmarkAdd(b *testing.B) {
	for i := 0; i < b.N; i++ {
		a := 10
		b := 20
		Add(a, b)
	}
}

//注意命名规范 Benchmark+首字母大写的方法名 参数固定
func BenchmarkSub(b *testing.B) {
	for i := 0; i < b.N; i++ {
		a := 10
		b := 20
		Sub(a, b)
	}
}

  

在文件所在的路径下,命令行执行

//go test -bench BenchmarkAdd 只压测BenchmarkAdd方法
//go test -bench BenchmarkSub 只压测BenchmarkSub方法
//go test -bench .    点表示测试该路径下所有压力测试
go test -bench .