以前までは、The Go Playground で実行できる Go Command は go run
のみだったので、テストを書きたい場合
previous_test_description
package main
import "testing"
func Hello(name string) string {
return "Hello, Emacs!"
}
func TestHello(t *testing.T) {
if Hello("Vim") != "Hello, Vim!" {
t.Error("Use Vim!!!")
}
}
func matchString(a, b string) (bool, error) {
return true, nil
}
func main() {
testSuite := []testing.InternalTest {
{Name: "TestHello", F: TestHello},
}
testing.Main(matchString, testSuite, nil, nil)
}
といった感じにまわりくどく書く必要がありました。
しかし、先日マージされたコミットにより気軽にテストができるようになりました。
テストのやり方は単純で、
- ソースコードに
main
関数を含めない - 普段テスト関数を書くように
func TestXxx(*testing.T)
を用意する
の2点を守ることです。
current_test_description
package main
import "testing"
func Hello(name string) string {
return "Hello, Emacs!"
}
func TestHello(t *testing.T) {
if Hello("Vim") != "Hello, Vim!" {
t.Error("Use Vim!!!")
}
}
あとは実行ボタンを押せば、特別な設定なしに自動でテストモードへと切り替わり、テストが実行されます。
なお 2018/3/23 現在、Bench
と Example
には対応していないので、実装されるのを気長に待つか Issue を書いちゃいましょう!
【追記】2018/4/11
3月の終わりにマージされたコミット により Example
にも対応しました。
- ソースコードに
main
関数を含めない - ソースコードに
func TestXxx(*testing.T)
関数を含めない -
testing
パッケージをインポートしない - 普段
Example
を書くようにfunc ExampleXxx()
関数を用意する
の4点を守ることで Example
を使うことができます。