環境
$ go version
go version go1.15.7 linux/amd64
$ go mod graph
mymodule github.com/davecgh/go-spew@v1.1.1
mymodule github.com/stretchr/testify@v1.7.0
mymodule gopkg.in/yaml.v3@v3.0.0-20210107192922-496545a6307b
suite の作り方
suite.Suite
を持つ構造体を定義し、任意に次の6つのメソッドを実装します。
SetupSuite()
SetupTest()
BeforeTest(suiteName, testName string)
AfterTest(suiteName, testName string)
TearDownTest()
TearDownSuite()
メソッド名にSuite
を含むものは一度しか実行されず、その他のメソッドはテストの数だけ実行されます。
まとめ
次のコードは、github.com/stretchr/testify
モジュールを事前に入れておくと、単体でコンパイル可能なコードです。
package main
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/suite"
)
type MySuite struct {
suite.Suite
}
func (s *MySuite) SetupSuite() {
}
func (s *MySuite) SetupTest() {
}
func (s *MySuite) BeforeTest(_, _ string) {
}
func (s *MySuite) AfterTest(_, _ string) {
}
func (s *MySuite) TearDownTest() {
}
func (s *MySuite) TearDownSuite() {
}
func (s *MySuite) TestOne() {
assert.Equal(s.T(), 1, 1)
}
func (s *MySuite) TestTwo() {
assert.Equal(s.T(), 2, 2)
}
func (s *MySuite) TestThree() {
assert.Equal(s.T(), 3, 3)
}
func TestMySuite(t *testing.T) {
suite.Run(t, new(MySuite))
}