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