加入測試
現在你的程式碼已經穩定(幹得漂亮),接下來加入一個測試。在開發過程中測試程式碼可以發現隨著修改而引入的 bug。本文中,你將為 Hello 函數加入一個測試。
注意: 本文是系列教學的一部分,該系列始於 建立 Go 模組。
Go 語言內建的單元測試支援使得在開發過程中進行測試變得更加容易。具體來說,透過使用命名約定、Go 的 testing 套件以及 go test 命令,你可以快速撰寫和執行測試。
步驟
- 建立測試檔案,在
greetings目錄中建立一個名為greetings_test.go的檔案。
檔名以
_test.go結尾,這會告知go test命令該檔案包含測試函數。
- 將以下程式碼貼上 到
greetings_test.go並儲存檔案:
在這段程式碼中,你:
- 在與其測試程式碼相同的套件中實作測試函數。
- 建立兩個測試函數來測試
greetings.Hello函數。測試函數名稱的形式為TestName,其中 Name 描述了特定測試的內容。此外,測試函數接受一個指向testing套件中的testing.T類型的指標作為參數。你使用這個參數的 methods 來報告和記錄測試中的資訊。 - 實作了兩個測試:
- 從命令列執行測試,在
greetings目錄中使用go test命令:
go test命令會執行測試檔案(檔名以_test.go結尾)中的測試函數(函數名以Test開頭)。你可以加入-v標誌以取得詳細輸出,列出所有測試及其結果。
測試應該通過:
- 破壞
Hello函數 以查看失敗的測試:
TestHelloName測試檢查返回值是否包含你指定的名字。為了查看失敗的測試結果,修改Hello函數,使其回應中不包含名字。
在 greetings/greetings.go 中,將 Hello 函數替換為以下程式碼(注意高亮部分):
- 再次執行測試 在
greetings目錄中:
這次執行
go test時不加-v標誌。輸出將僅顯示失敗測試的結果,這在你有很多測試時非常有用。TestHelloName測試應該失敗,而TestHelloEmpty仍然通過。
總結
你現在為 Go 程式碼撰寫並執行了測試,學會了如何使用 Go 內建的測試框架來確保你的函數按預期行為。這種做法有助於保持程式碼品質,並在開發早期捕獲 bug。
在接下來的(也是最後一個)主題中,你將看到如何編譯和安裝程式碼以便在本地執行。