Go語言-測試案例

來源:互聯網
上載者:User

編寫單元測試用例

  • 檔案名稱必須以'_test.go'結尾
  • 必須import "testing"這個包
  • 測試案例會按照原始碼中寫的順序依次執行
  • 測試函數'TestXxx(t *testing.T)'中的參數是‘testing.T’,我們可以用該類型來記錄錯誤或者是測試狀態
  • 測試格式:‘func TestXxx(t *testing.T)’,'Xxx'部分可以為任意的字母數字組合,但是首字母不能是小寫字母[a-z]
  • 函數中通過調用'testing.T'的'Error'、'Errorf'、'FailNow'、'Fatal'、‘FatalIf’方法,說明測試案例不通過,調用''Log'方法用來記錄測試的資訊

編寫壓力測試

  • 壓力測試用例必須遵循如下格式,其中XXX可以是任意字母數位組合,但是首字母不能是小寫字母
    func BenchmarkXXX(b *testing.a) {...}
  • go test 不會預設執行壓力測試的函數,如果要執行壓力測試需要帶上參數。-test.bench,文法: -test.bench="test_name_regex" ,例如 go test -test.bench=".*"表示測試全部的壓力測試函數
  • 在壓力測試用例中,需要才迴圈體內使用testing.B.N,以使測試案例正常運行
  • 檔案名稱也必須以_test.go結尾

單元測試用例

源碼

    package gotest    import(    )    func Add(a, b float64) float64 {        return a +  b    }

測試案例

package gotestimport (    "testing")func Test_Add_1(t *testing.T) {    if i := Add(6,2); i != 8 {        t.Error("fail")    } else {        t.Log("pass")    }}func Test_Add_2(t *testing.T) {    if i := Add(6,2); i == 8 {        t.Log("pass")    } else {        t.Error("fail")    }}

運行測試案例

    go test -v

測試案例執行結果

=== RUN   Test_Add_1--- PASS: Test_Add_1 (0.00s)    gotest_test.go:11: pass=== RUN   Test_Add_2--- PASS: Test_Add_2 (0.00s)    gotest_test.go:17: passPASSok      github.com/shadowsocks/shadowsocks-go/sample-config/gotest  0.001s

壓力測試用例

源碼

package gotestimport(    "testing")func Benchmark_Add(b *testing.B) {    for i := 0; i < b.N ; i++ {        Add(3,4)    }}func Benchmark_TimeConsumingFunction(b *testing.B) {    b.StopTimer() //調用該函數停止壓力測試的時間計數    //做一些初始化工作,這些時間不影響我們測試函數本身的效能    b.StartTimer()    for i := 0; i < b.N; i++ {        Add(5,6)    }}

運行結果

Benchmark_Add-4                         2000000000           0.38 ns/opBenchmark_TimeConsumingFunction-4       2000000000           0.38 ns/opPASSok      github.com/shadowsocks/shadowsocks-go/sample-config/gotest  1.594s第一條顯示Benchmark_add-4執行了20億次,每次執行時間為0.38納秒第二條也一樣
相關文章

聯繫我們

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