go testing:單元測試

來源:互聯網
上載者:User
Test & Benchmark 源碼檔案名稱需要以”_test.go”結尾 放置於需要測試模組的相同目錄下 在build時會忽略所有test檔案 Tests 定義
func TestXxx(*testing.T)
Benchmarks 定義
func BenchmarkXxx(*testing.B)
例子
func BenchmarkBigLen(b *testing.B) {    big := NewBig()    b.ResetTimer() //如果之前有耗費時間的啟動設定,可以重設計算時間    for i := 0; i < b.N; i++ {        big.Len()    }}
func BenchmarkTemplateParallel(b *testing.B) {    templ := template.Must(template.New("test").Parse("Hello, {{.}}!"))    b.RunParallel(func(pb *testing.PB) {        var buf bytes.Buffer        for pb.Next() {            buf.Reset()            templ.Execute(&buf, "World")        }    })}
Examples 定義
func ExampleXxx()
例子
//結束行需要有Output:開頭的注釋,用來比對標準輸出(std.out)(忽略開頭和結尾的空格)func ExampleSalutations() {        fmt.Println("hello, and")        fmt.Println("goodbye")        // Output:        // hello, and        // goodbye}
命名規範
//suffix:在有多個example函數時,表示一個包/函數/類型/方法的名稱func Example_suffix() { ... } //package的examplefunc ExampleF_suffix() { ... } //函數的examplefunc ExampleT_suffix() { ... } //類型的examplefunc ExampleT_M_suffix () { ... }//方法的example

當一個test檔案沒有包含test或benchmark函數時,包含至少一個example函數,則認為是一個example檔案 Subtests & Sub-benchmarks 作用 增加了test的分層 可以共用setup(設定)和tear-down(銷毀)過程 例子

//依次運行Subtestsfunc TestFoo(t *testing.T){    //setup code    t.Run("A=1",func(t *testing.T){...})    t.Run("A=2", func(t *testing.T) { ... })    t.Run("B=1", func(t *testing.T) { ... })    //tear-down code}
//並行運行Subtestsfunc TestGroupedParallel(t *testing.T) {    for _, tc := range tests {        tc := tc // capture range variable        t.Run(tc.Name, func(t *testing.T) {            t.Parallel() //subtests彼此並行            ...        })    }}
//Run在所有subtests完成前不會返回func TestTeardownParallel(t *testing.T) {    // This Run will not return until the parallel tests finish.    t.Run("group", func(t *testing.T) {        t.Run("Test1", parallelTest1)        t.Run("Test2", parallelTest2)        t.Run("Test3", parallelTest3)    })    // }
Main 作用 開始測試時,首先運行TestMain 相當與測試的主線程 在TestMain中可以做一些Setup和Tear-down 最後應該使用os.Exit退出 例子
func TestMain(m *testing.M){    flag.Parse()    os.Exit(m.Run())}
go test命令
go test -run Foo     # Run top-level tests matching "Foo".go test -run Foo/A=  # Run subtests of Foo matching "A=".go test -run /A=1    # Run all subtests of a top-level test matching "A=1".
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.