日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

《Go程序设计语言》- 第11章:测试

發布時間:2023/12/2 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《Go程序设计语言》- 第11章:测试 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

    • 前言
    • go test工具
    • Test函數
    • 覆蓋率
    • Benchmark函數
    • 性能剖析
    • Example函數

前言

本專欄是筆者在學習《Go程序設計語言》這本書時,對每個章節認為較為重要(容易忘記👻)的知識點記錄的筆記,其中也會有少量的思考👀, 現整理成博客分享出來。

如果對專欄感興趣,跑過去看一眼,書中的每一章都有:《Go程序設計語言》筆記

??注意??:本專欄不是詳細的知識講解,只是碎片的知識條目,或可作為Go知識點查漏補缺的小工具~

go test工具

  • Go的測試方法看起來比較低級,依賴于go test命令,和一些能有該工具運行的測試函數編寫約定;
  • 包目錄中以_test.go結尾的文件不是go build編譯的目標,而是go test編譯的目標;
  • *_test.go文件中有三種特殊函數:功能測試函數、基準測試函數、示例函數
  • 功能測試函數以Test為前綴,檢測運行結果并報告PASS或者FAIL;
  • 基準測試函數以Benchmark開頭,用來測試性能,執行多次后輸出平均執行時間;
  • 示例函數以Example開頭,用來提供機器檢查過的文檔;
  • go test工具掃描*_test.go文件,尋找其中的特殊函數,生成一個臨時的main包來調用他們,編譯運行打印結果,最后清空臨時文件;
  • Test函數

  • 每一個測試文件必須導入testing包,且測試函數簽名如下,其中參數t提供了t.Error()方法以匯報測試失敗和日志記錄功能;

    func TestName(t *testing.T){}
  • 測試函數名必須以大寫開頭,如TestmyFunc是錯誤的;

  • go test -v可以報告每個測試的耗時;

  • 可以使用基于表的測試用例:

    var tests = []struct{input stringres bool }{{"ok input", true},{"error input", false} }
  • 測試錯誤消息的格式一般是:f(x)=y, want z;

  • 隨機測試:使用函數生成一定格式生成預知結果的隨機輸入;大概率用到math/rand包;

  • 覆蓋率

  • Dijkstra:測試旨在發現bug,而不是證明其不存在
  • go test -cover可以查看測試覆蓋率情況;輸出每條語句的執行情況;
  • Benchmark函數

  • 基準測試函數使用如下聲明:

    func BenchmarkMyTest(b *testing.B){... }
  • testing.B除了提供錯誤輸出函數之外,還提供b.N獲取被執行的次數;

  • go test默認不會執行任何基準測試,而需要使用go test -bench=Test來指定函數;

  • 性能剖析

  • 過早優化是萬惡之源

  • 性能剖析分為很多種:CPU性能剖析、堆性能剖析、阻塞性能剖析;可通過如下語句引入:

    go test -cpuprofile cpu.out go test -memprofile mem.out go test -blockprofile block.out
  • Example函數

  • 聲明是沒有參數也沒有返回值:

    func ExampleTest(){}
  • 主要目的是作為文檔,其次可用于Go Playground,在網頁上編輯和運行每個示例函數;


  • 如有錯誤 ? ,歡迎指正 ??~

    如有收獲 🍗,可以考慮點贊👍/評論💬/收藏??/關注👀,大家共同進步~


    總結

    以上是生活随笔為你收集整理的《Go程序设计语言》- 第11章:测试的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。