AdSense

網頁

2021/7/11

Golang Testify 測試套件安裝

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.goPlus()函式為被測試對象。

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


沒有留言:

AdSense