這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
1.建立測試檔案夾mysql,檔案夾下的go檔案的package必須與檔案夾名一致(不然會識別不到)
2.建立需要測試的檔案mysql.go(使用github.com/go-sql-driver/mysql包)
package mysqlimport ( "database/sql" _ "github.com/go-sql-driver/mysql")func findByPk(pk int) int { var num int = 0 db, err := sql.Open("mysql", "root:@tcp(127.0.0.1:3306)/plugin_master?charset=utf8") if err != nil { panic(err.Error()) } defer db.Close() stmtOut, err := db.Prepare("select id from t_admin where id=?") if err != nil { panic(err.Error()) } defer stmtOut.Close() err = stmtOut.QueryRow(pk).Scan(&num) if err != nil { panic(err.Error()) } return num}
View Code
3.建立單元測試用例檔案mysql_test.go(檔案名稱必須是*_test.go的類型,*代表要測試的檔案名稱,函數名必須以Test開頭如:TestXxx或Test_xxx)
package mysqlimport ( "testing")func Test_findByPk(t *testing.T) { num := findByPk(1) t.Log(num)}
View Code
測試所有的檔案 go test,將對目前的目錄下的所有*_test.go檔案進行編譯並自動運行測試。
測試某個檔案使用”-file”參數。go test –file *.go 。例如:go test -file mysql_test.go,"-file"參數不是必須的,可以省略,如果你輸入go test b_test.go也會得到一樣的效果。
測試某個方法 go test -run='Test_xxx'"-v" 參數 go test -v ... 表示無論用例是否測試通過都會顯示結果,不加"-v"表示只顯示未通過的用例結果
4.建立benchmark效能測試用例檔案mysql_b_test.go(檔案名稱必須是*_b_test.go的類型,*代表要測試的檔案名稱,函數名必須以Benchmark開頭如:BenchmarkXxx或Benchmark_xxx)
package mysqlimport ( "testing")func Benchmark_findByPk(b *testing.B) { for i := 0; i < b.N; i++ { //use b.N for looping findByPk(1) }}
View Code
進行所有go檔案的benchmark測試 go test -bench=".*" 或 go test . -bench=".*"
對某個go檔案進行benchmark測試 go test mysql_b_test.go -bench=".*"
5.用效能測試產生CPU狀態圖(暫未測試使用)
使用命令:
go test -bench=".*" -cpuprofile=cpu.prof -c
cpuprofile是表示產生的cpu profile檔案
-c是產生可執行檔二進位檔案,這個是產生狀態圖必須的,它會在本目錄下產生可執行檔mysql.test
然後使用go tool pprof工具
go tool pprof mysql.test cpu.prof
調用web(需要安裝graphviz)來產生svg檔案,產生後使用瀏覽器查看svg檔案參考 http://www.cnblogs.com/yjf512/archive/2013/01/18/2865915.html