package main
//每一个test文件必须引入testing的包
import (
"testing"
"fmt"
)
//测试用例必须以Test开始,否则不会执行
func eee(t *testing.T) {
res:=Print1to20()
if 20 != res{
fmt.Println("wrong in test")
return
}
fmt.Println("right in test")
}
func TestPrint1to20No1(t *testing.T) {
//SkipNow 跳过当前test 直接按PASS处理 并继续执行下一个test
//并且在代码块的第一行
t.SkipNow()
res:=Print1to20()
if 20 != res{
fmt.Println("wrong in test in 1th")
return
}
fmt.Println("right in test in 1th")
}
func TestPrint1to20No2(t *testing.T) {
res:=Print1to20()
if 20 != res{
fmt.Println("wrong in test in 2th")
return
}
fmt.Println("right in test in 2th")
}
func TestSubTest2(t *testing.T) {
fmt.Println("Test Sub Test2")
}
func TestSubTest1(t *testing.T) {
fmt.Println("Test Sub Test1")
}
//控制子测试的测试顺序 t.Run()
func TestMultySubTest(t *testing.T) {
t.Run("t1",TestSubTest1)
t.Run("t2",TestSubTest2)
}
//使用TestMain作为初始化test,并且使用m.Run()来调用其他test
//完成一些需要初始化的test,例如数据库连接,文件打开,预先登陆
func TestMain(m *testing.M){
fmt.Println("this is TestMain")
//调用整个测试文件里的其他test,如果没有 m.Run() 则只会执行自己
m.Run()
}
//benchmark 也是一个普通的test case 受到 TestMain的控制
//b.N受到被测程序稳态 的影响
func BenchmarkPrint1to20(b *testing.B) {
for i:=0;i<b.N;i++{
Print1to20()
}
}
this is TestMain
goos: windows
goarch: amd64
pkg: stream-action/1test
100000000 13.8 ns/op
PASS
Process finished with exit code 0