はじめに
こんにちは、Go界の三船敏郎です。さて、最近Goを触り始めたんで、色々と情報を眺めてます。昨日GAE/Goで何か書こうと思って調べ物してたら、Travis CIがGoに対応しているという事実を知って衝撃を受けたので早速試してみました。
テストプロジェクト作成
まずはテストプロジェクトを作ります。超簡単に足し算をする関数とそのテストコードを書きました。
- sample.go
package main import "fmt" func main() { fmt.Println("2 + 3 = %v", Add(2, 3)) } func Add(n int, m int) int { return n + m }
- sample_test.go
package main import "testing" func TestAdd(t *testing.T) { const n, m = 2, 3 const out = 5 if x := Add(n, m); x != out { t.Errorf("Add(%v, %v) = %v, want %v", n, m, x, out) } }
Goの標準パッケージのtestingを使ってテストを書きました。まずは手元でテストを走らせてみます。
% tree . ├── sample.go └── sample_test.go % go test PASS ok _/Users/ymotongpoo/src/projects/gotravistest 0.019s
予想通りテストが通りました。これでsample_test.goのoutを6に変更してみます。
% go test --- FAIL: TestAdd (0.00 seconds) sample_test.go:11: Add(2, 3) = 5, want 6 FAIL exit status 1 FAIL _/Users/ymotongpoo/src/projects/gotravistest 0.019s
ちゃんと失敗しました。
Travis CIへ登録
これを今度はTravis CIで試してみます。プロジェクトトップに次のような.travis.ymlを置きます。
language: go script: go test
走らせたコマンドそのままです。GitHubにプロジェクトを登録して早速実行してみます。まずは成功するような元のコードの場合。
ちゃんと動きました。今度は先ほどのようにテストが失敗するようにコードを書き換えてpushします。すると次のようにテストが失敗しました。
おわりに
まだXUnit形式での出力方法とかは調べてないですが、とりあえずTravis CIでGoのテストを実行できるとわかっただけでだいぶ収穫でした!