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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

goland go test_Go单元测试实践一,快速上手

發布時間:2024/9/30 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 goland go test_Go单元测试实践一,快速上手 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • Go單元測試實踐二,常見問題
  • Go單元測試實踐三,代碼風格
  • Go 單元測試實踐四,集成到gitlabci

前段時間我在團隊內推廣了單測,為幫助同事快速上手,寫了一些文檔,這是第一篇,
如果你對單測,Go都有基礎,本文可幫你迅速掌握Go單測。源碼來自github utdemo倉庫。

1. 背景/工具

Go原生給出了單測的書寫規范。有兩條,

  • 文件命名為*_test.go,一般與源碼并列,如下
  • /demo/src.go/src_test.go

    2. 測試函數命名為Test*,參數為t *testing.T,如下:

    // filename: src.go func Add(a, b int) int {return a + b }// filename: src_test.go package demo import "testing"func TestAdd1(t *testing.T) {if Add(2, 3) != 5 {t.Error("result is wrong!")} else {t.Log("result is right")} }

    我們額外使用了goconvey這個工具庫,它提供了一些工具方法,有它寫單測更方便。其介紹,安裝可參考 goconvey README

  • 下面是Goconvey樣例:
  • // filename: src_test.go import ("testing". "github.com/smartystreets/goconvey/convey" )func TestAdd(t *testing.T) {Convey("測試add方法", t, func() {So(Add(2, 3), ShouldEqual, 5)}) }

    2. Goconvey提供了一系列assert工具函數,之后會常用到,可以在這里查詢
    3. 更多樣例可參考github utdemo倉庫。需要提下,測試會用到一些公用函數,應把它們放置在testutils中以便引用,這個做法在demo中有展示。

    2. 怎樣做調試?

    最方便的方法是使用goland調試:

  • 編寫單測代碼
  • 按下快捷鍵 run context configuration,mac下默認為"control+shift+r"
  • 查看執行結果,是否success
  • 如fail,繼續從1,2,3循環
  • 效果如下圖

    如上方法僅能調試單個文件,如要執行某包內的所有測試,

    • 所有包,運行命令:go test ./...
    • 僅指定包,運行命令:go test ${包名}, 如:go test github.com/xialu4820723/utdemo/file
    • 僅指定路徑,運行命令: go test ${文件路徑}
      如:go test ./file

    運行命令時,當前目錄應為項目根目錄

    3. 怎么查看測試覆蓋率?

    分兩步:

  • 生成覆蓋率報告文件:
    • 所有包:go test -coverprofile cover.out -coverpkg=./... ./...
    • 僅指定包:go test -coverprofile cover.out ${包名},
      如:go test -coverprofile cover.out github.com/xialu4820723/utdemo/file

    以上命令會生成名為"cover.out"的文件

    2. 展示測試覆蓋報告:

    html形式:go tool cover -html=cover.out
    文字形式:go tool cover -func=cover.out

    html格式比較直觀,效果如下圖:

    綜覽所有包的測試覆蓋率:

  • goconvey
  • 安裝goconvey,執行命令:go get github.com/smartystreets/goconvey
  • 來到項目目錄下,運行命令:goconvey,會彈出一個網頁
  • 此時在后臺會運行各個包的單測,等待一會,屏幕左側會展示出各包的測試覆蓋情況
  • 使用goland
  • 在ide界面,右鍵點擊項目根目錄
  • 點擊Run with Coverage
  • 效果分別如下圖所示

    總結

    以上是生活随笔為你收集整理的goland go test_Go单元测试实践一,快速上手的全部內容,希望文章能夠幫你解決所遇到的問題。

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