11.1. go test

go test命令是一個按照一定的約定和組織來測試代碼的程序。在包目錄內,所有以_test.go為後綴名的源文件在執行go build時不會被構建成包的一部分,它們是go test測試的一部分。

*_test.go文件中,有三種類型的函數:測試函數、基準測試(benchmark)函數、示例函數。一個測試函數是以Test為函數名前綴的函數,用於測試程序的一些邏輯行為是否正確;go test命令會調用這些測試函數並報告測試結果是PASS或FAIL。基準測試函數是以Benchmark為函數名前綴的函數,它們用於衡量一些函數的性能;go test命令會多次運行基準測試函數以計算一個平均的執行時間。示例函數是以Example為函數名前綴的函數,提供一個由編譯器保證正確性的示例文檔。我們將在11.2節討論測試函數的所有細節,並在11.4節討論基準測試函數的細節,然後在11.6節討論示例函數的細節。

go test命令會遍歷所有的*_test.go文件中符合上述命名規則的函數,生成一個臨時的main包用於調用相應的測試函數,接著構建並運行、報告測試結果,最後清理測試中生成的臨時文件。