読者です 読者をやめる 読者になる 読者になる

Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

Golangでテストを始める

GoLangでテストをやるには"testing"パッケージをつかいます。
公式では、余計な外部パッケージを使わずデフォのものを推奨しているので、それに従っておきます。

実際のところ

デフォでは"$GOPATH/src"以下にあるフォルダを対象に実行されます。
今回は"hoge"を対象に。
外部パッケージ化する場合、"github.com/USERNAME/PACAKGENAME"みたいなディレクトリ構造がお作法のようです。

$ cd $GOPATH/src
$ tree -L 3 hoge/
hoge/
├── hoge.go
└── hoge_test.go

0 directories, 2 files

とりあえず、最小構成のテスト用スクリプトはこちら。
まずはhoge.go

package hoge

func Something(a int16, b int16) int16 {
	return a + b
}

テストのhoge_test.go。
"パッケージ名_test"という命名規則に従う事で、後述のテストコマンドがスムーズに動きます。

package hoge

import "testing"

//テストをやってみたい
func TestSomething(t *testing.T) {
	if Something(1, 3) != 4 {
		//失敗したケース。
		//GoLangではエラーはすぐに処理という文化らしいので
		t.Fatal("something(1,3) should be 4, but Don't matched")
	}
}

では、実行してみましょう。

$ go test PACKAGENAME

という記法なので、以下のように叩いてみると……はい、返り値の型が不正で駄目ですね。
こういうトコロもみてくれます(白目

$ go test hoge
# hoge
hoge/hoge.go:4: cannot use a + b (type int16) as type int in return argument
FAIL	hoge [build failed]

気を取り直して、intをint16にして再度やると

$ go test hoge
ok  	hoge	0.006s

つづき

ドキュメント化時に実行例つきにしたい場合は、"Example~"記法です。
shuzo-kino.hateblo.jp