Hike News
Hike News

Golang單元測試

Introduction

  • 單元測試往往是針對一個模塊或是針對一個函數來進行測試
    • 確認函數運行的結果是正確無誤的
  • 引出單元測試
    • Golang testing測試框架,可以很好的解決問題
  • Go 自帶輕量級的測試框架testing和自帶go test命令來實現單元測試性能測試

規範

  1. 測試用例文件名必須以_test.go結尾。
    • 例如cal_test.go
      • cal不是固定的根據自己的需求定義
    • 該文件放在與被測試的包相同的包中即可
      • 該文件將被排除在正常程序包之外
  2. 測試用例函數必須以Test開頭,一般來說就是Test+被測試的函數名
    • 被測試函數名的第一個字母一定要大寫
      • 例如TestAddUpperTestSub
  3. TestAddUpper(t *testing.T)的形式參數必須是*testing.T
  4. 一個測試文件中,可以有多個測試用例函數
    • 比如TestAddUpperTestSub
  5. 運行測試指令
    • go test
      • 運行正確時,無日誌輸出
      • 錯誤時,會輸出日誌
    • go test -v
      • 對同一個包中的test文件全部進行測試
      • 運行正確或錯誤時,都會輸出日誌
  6. 當出現錯誤時,可以使用t.Fatalf來格式化輸出錯誤信息,並退出程序
  7. t.Logf方法,可以直接輸出相應的日誌
  8. 測試函數時,並沒有放在main函數中執行
  9. PASS表示測試成功,FAIL表示測試失敗
  10. 測試單個文件,一定要帶上被測試的原文件
    • go test -v cal_test.go cal.go
  11. 測試單個方法
    • go test -v -test.run TestAddUpper

範例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package main

import (
"fmt"
"testing" //引入go的 testing框架的包
)

//編寫要給測試用例,測試函數執行結果是否正確
//一般函數為Test+要測試函數名字
//其中函數名字可以是任何字母数字字符串(但第一个字母不能是小寫a-z),用于识别测试例程。
func TestAddUpper(t *testing.T) {

//調用
res := addUpper(10)
if res != 55 {
//輸出日誌並退出程序
t.Fatalf("addUpper(10) excuted failed, expect %v but %v", 55,res)
}

//如果正確,輸出日誌
t.Logf("addUpper(10),excuted success")
}