golang test測試使用

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

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
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.