Go雖然自帶testing
package可撰寫測試程式但功能陽春,沒有常見的assert或mock功能,而Testify套件則彌補這塊不足讓撰寫測試更方便。本篇介紹安裝Testify及基本用法。
範例環境:
- Go 1.16
- Testify 1.7
安裝 Install
在專案根目錄以命令列輸入go get github.com/stretchr/testify
下載Testify module及依賴。
$ go get github.com/stretchr/testify
go: downloading github.com/stretchr/testify v1.7.0
go: downloading github.com/stretchr/objx v0.1.0
go: downloading github.com/davecgh/go-spew v1.1.0
go: downloading gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c
go get: added github.com/stretchr/testify v1.7.0
下載完後在專案的go.mod
可看到加入的Testify module代表安裝完成。
go.mod
module abc.com/demo
go 1.16
require github.com/stretchr/testify v1.7.0 // Testify module
使用 Use
Testify功能包括:
- assert:提供方便的測試方法,省去寫if-else判斷及增加可讀性。
- mock:測試對象的依賴物件可用假的物件(test double)來替代達到單元測試的隔離效果。
- suite:組織多個測試案例為測試包/測試套組(test suite)。
例如main.go
的Plus()
函式為被測試對象。
main.go
package main
func Plus(x, y int) int {
return x + y
}
則在測試程式main_test.go
使用Testify assert
如下。
main_test.go
package main
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestPlus(t *testing.T) {
expected := 3
actial := Plus(2, 1)
// use Testify assert
assert.True(t, expected == actial)
assert.Equal(t, expected, actial)
}
在專案目錄執行go test -v
開始測試。
$ go test -v
=== RUN TestPlus
--- PASS: TestPlus (0.00s)
PASS
ok abc.com/demo 0.311s
參考github。
沒有留言:
張貼留言