Go語言中的單元測試
顧名思義,單元測試,就是一種為驗證單元的正確性而設定的自動化測試,一個單元就是程式中的一個模組化部分。
寫一段簡單的程式碼。
package main
func print1to20() int {
var res int
for i:=0;i<=20;i++ {
res += i
}
return res
}
func main() {
//fmt.Println(Print1to20())
}
如果我們想要測試 print1to20 函式的正確性改怎麼辦?如果功能簡單直接在 main 函式中列印結果測試即可,如果功能複雜就要寫一個相關的單元測試了。
下面給出相關單元測試的程式碼
package main
import (
"fmt"
"testing"
)
//使用TestMain作為初始化test,並且使用m.Run()來呼叫其他的tests可以完成一些初始化操作的testing,比如資料庫的連線,檔案開啟,REST服務的登入等等..
//如果沒有呼叫m.Run()則除了TestMain以外的其他tests都不會被執行
func TestMain(m *testing.M) {
fmt.Println("test main first")
//初始化...
//資料庫的連線,檔案開啟,REST服務的登入等等
m.Run()
}
func testPrint(t *testing.T) {
//t.SkipNow() //立刻跳出這個測試
res := print1to20()
if res != 210 {
t.Errorf("Wrong result of Print1To20") //立刻跳出這個測試
}
}
func testPrint2(t *testing.T) {
//t.SkipNow() //立刻跳出這個測試
res := print1to20()
res++
if res != 211 {
t.Errorf("TestPrint2 result failed") //立刻跳出這個測試
}
}
//Go的Test不會保證多個TestXxx是順序執行的,但通常是按照順序執行。
//使用t.Run來執行subtests可以做到控制test輸出以及test的順序
func TestAll(t *testing.T) {
//先執行testPrint,後執行testPrint2
t.Run("TestPrint", testPrint)
t.Run("TestPrint2", testPrint2)
}
以上的測試函式的功能已經在註釋中寫清楚了,大家看一下注釋就能看的明白。在命令列裡面輸入 go test -v 就會進行測試。
更多原創文章乾貨分享,請關注公眾號
- 加微信實戰群請加微信(註明:實戰群):gocnio
相關文章
- Go單元測試Go
- Go 語言區塊鏈測試實踐指南(一):GO單元測試Go區塊鏈
- Go 單元測試之mock介面測試GoMock
- Go 單元測試實踐Go
- go 單元測試進階篇Go
- Go 單元測試基本介紹Go
- C語言單元測試C語言
- 單元測試:單元測試中的mockMock
- Go 單元測試之HTTP請求與API測試GoHTTPAPI
- Go 單元測試之Mysql資料庫整合測試GoMySql資料庫
- Go 語言中的方法Go
- Go語言中的InterfaceGo
- 搞定Go單元測試(二)—— mock框架(gomock)GoMock框架
- 搞定Go單元測試(三)—— 斷言(testify)Go
- 測試 之Java單元測試、Android單元測試JavaAndroid
- 使用go優雅地撰寫單元測試Go
- Go 語言中的 collect 使用Go
- Go 語言中的外掛Go
- Go 語言中的 切片 --sliceGo
- 為程式碼編寫穩定的單元測試 [Go]Go
- 如何寫好測試用例以及go單元測試工具testify簡單介紹Go
- 搞定Go單元測試(四)—— 依賴注入框架(wire)Go依賴注入框架
- 認真一點學 Go:19. 單元測試Go
- [iOS單元測試系列]單元測試編碼規範iOS
- GO 語言中的物件導向Go物件
- 論go語言中goroutine的使用Go
- Go語言中的併發模式Go模式
- Flutter 單元測試Flutter
- 單元測試工具
- iOS 單元測試iOS
- 前端單元測試前端
- golang 單元測試Golang
- PHP 單元測試PHP
- phpunit單元測試PHP
- JUnit單元測試
- unittest單元測試
- Junit 單元測試.
- 單元測試真