Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

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