IntelliJの環境を整える
- IntelliJの環境を整えるには、この記事を参考にしてください
assertを使ってテストコードを書く
- Golangにはassert.Equalなどが標準では用意されていません
- github.com/stretchr/testifyパッケージを使ってassertを使えるようにします
- なぜGolangにassertがないかは、この記事に書いてあります
- http://qiita.com/Jxck_/items/8717a5982547cfa54ebc#2-4
- 一つの思想として尊重はしますが、テストコードを書くコストが大きく辛いので、自分はassertを使います
- Ginという人気のGolangフレームワークのテストコードも、stretchr/testifyのassertを使っています
vendorフォルダのテストコードを実行しないようにする
- vendorフォルダにサードパーティのパッケージがあると思いますが、それらのテストコードを実行しないようにしたい
- そのためにはフォルダ構成を考えておく必要がある
- 自分はプロジェクトのルートにappというフォルダを作り、その中に自分のコードを書くようにしています
- そうするとappフォルダの中身のテストコードだけ実行するように指定して、vendorのテストを走らせないようにできます
テストコードを書く
- ファイル名は{テストするコードを含むファイル名}_test.goとする。
- _testをつけると、それはテストを含むファイルを認識される
- テスコードはこんな感じで書くことになります
- 関数名の先頭にTestをつける
user_test.go
package model
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestUser(t *testing.T) {
user := User{
FirstName:"Ichiro",
LastName:"Suzuki",
Username:"ichiro",
Email:"ichiro@example.jp",
DisplayName:"Hit King Ichiro"
}
assert.Equal(t, "Ichiro", user.FirstName)
assert.Equal(t, "Suzuki", user.LastName)
assert.Equal(t, "ichiro", user.Username)
assert.Equal(t, "ichiro@example.jp", user.Email)
assert.Equal(t, "Hit King Ichiro", user.DisplayName)
}
IntelliJでのテスト実行
- メニュー > Run > Runで新たな実行設定を作る
- Test framework: gotest
- Test kind: Directory
- Directory: {$GOPATH}/src/{パッケージ名}/app
- $GOPATHとパッケージ名は環境に合わせる
これでappディレクトリにある *_test.go ファイルのテストが実行されます。