當我們開發軟體時,要確保程式碼的正確性和穩定性。 Golang 有一個內建的測試框架,稱為 testing,可以輕鬆編寫單元測試和整合測試,以確保程式碼正確運行。今天的文章將簡單探討如何使用Golang的testing套件來撰寫測試,以確保程式碼的品質。
Golang 的 testing
套件是Go語言 標準庫
的一部分,提供一個簡單的方式來編寫 單元測試
和 整合測試
。不僅易於使用,而且可以與Go的測試工具良好配合,例如 go test
命令,使測試過程更加順暢。
單元測試
是針對程式中的 個別函數
或 方法
進行測試的過程,以確保它們按照 預期運行
。
舉例:
// 要測試的函數,計算兩個整數的和
func Add(a, b int) int {
return a + b
}
// 單元測試函數
func TestAdd(t *testing.T) {
result := Add(2, 3)
if result != 5 {
t.Errorf("Add(2, 3) = %d; want 5", result)
}
}
定義一個名為 Add
的函數,將兩個整數相加。接著我們使用 Test
開頭的函數名稱來 創建單元測試函數
,並在該函數內測試Add函數的行為。如果測試失敗
,我們可以使用t.Errorf
函數來生成錯誤消息。
寫完測試,可以使用 go test
命令來運行測試。
go test
go test
將 自動查找
以 _test.go
結尾的文件,並 運行
其中的 測試函數
。如果一切正常,你將看到一個 綠色
的 "ok"
,這表示所有 測試通過
了。如果有測試失敗,會顯示相關的錯誤消息。
除了單元測試,testing
套件還支援撰寫 整合測試
。整合測試通常用於測試 多個組件
或 模組之間
的互動。
舉例:
// 整合測試函數
func TestIntegration(t *testing.T) {
t.Run("TestAdd", TestAdd)
t.Run("TestSubtract", TestSubtract)
// 添加更多的測試函數...
}
這邊使用 t.Run
函數,運行多個測試函數
並將它們組合在一起
。這樣的整合測試函數可以更全面測試
不同組件
之間的互動。
// main_test.go
package main
import (
"testing"
)
// 單元測試函數
func TestAdd(t *testing.T) {
result := Add(2, 3)
if result != 5 {
t.Errorf("Add(2, 3) = %d; want 5", result)
}
}
func TestSubtract(t *testing.T) {
result := Subtract(7, 3)
if result != 4 {
t.Errorf("Subtract(7, 3) = %d; want 4", result)
}
}
// 整合測試函數
func TestIntegration(t *testing.T) {
t.Run("TestAdd", TestAdd)
t.Run("TestSubtract", TestSubtract)
// 添加更多的測試函數...
}
創建一個名為 main_test.go
的測試檔案。導入 testing
套件以及我們 要測試的main包
。
接著定義兩個單元測試函數 TestAdd
和 TestSubtract
,分別測試 Add
和 Subtract
函數的行為。如果測試失敗,它們會使用t.Errorf函數生成錯誤消息。
最後創建一個整合測試函數 TestIntegration
,使用 t.Run
函數運行我們的單元測試函數。這樣的整合測試函數可以更全面的測試不同組件之間的互動。
無論是開發小型項目或大型專案,都建議在開發過程中使用testing來確保程式碼的正確性。有助於減少錯誤,也能提高開發的速度。
10/9 自然醒,悠閒的吃個 brunch 就快馬加鞭的來寫今天的文啦!
時間過好快不知不覺來到第24天了,期許順利完賽。