GoとTest coverage

2014/1/17
自己紹介
Name : Sota Nakajima
Twitter : @soldier_nakaji

Hobby :
Goとは
・既存言語のアイデアをもとに生み出された
 新しいプログラミング言語 (2009/11/10誕生)

2014年にGoの時代が来る!(日経ソフトウェア記事)
http://coin.nikkeibp.co.jp/coin/itpro/hansoku/nsw201402_1.html
Goの特徴
・早いコンパイル速度、実行速度
・メモリ管理(GC)
・マルチコア活用(goroutine)
・便利なコマンド
 ・整形(go fmt)
 ・パッケージ収集(go get)
 ・テスト(go test)
 ・ドキュメント作成・閲覧(go doc)
 
Goの特徴
・他の言語に戻れなくなる。
Testを作成する1
GoのTestの条件
・ ファイル名が _test.go で終わる
・ 関数名がTestXXX
・ シグネチャ func (t *testing.T)を持つ
Testを作成する2
coverage.go

coverage_test.go
Testを実行する
# ディレクトリ構成
$ tree ../covertest
../covertest
├── coverage.go
└── coverage_test.go
# Testを実行
$ go test ./...
ok
covertest

0.001s

# Testを実行(詳細表示)
$ go test -v ./...
=== RUN TestSize
--- PASS: TestSize (0.00 seconds)
PASS
ok
covertest
0.001s
ちなみに...
Goの標準テストパッケージにはAssertがない
理由:
プログラマが適切なエラーハンドリングをしなくなるから
しかし...
テスト用ライブラリ(Assert機能あり)がたくさんできてる・・・
・https://github.com/stretchr/testify
・https://github.com/onsi/ginkgo
・https://github.com/franela/goblin
・http://godoc.org/launchpad.net/gocheck
・
・
Coverage測定する1
・Go1.2 (2013/12/1 Released) から使えるように     
 http://golang.org/doc/go1.2#cover

・使い方はカンタン
$ go test -cover ./...
ok
covertest
0.001s coverage: 42.9% of statements
Coverage測定する2
・テストが通っていない個所を特定する     
$ go test -coverprofile=coverage.out ./...
ok
covertest
0.002s coverage: 42.9% of statements
$ go tool cover -html=coverage.out
Coverage測定する3
通過(緑)、対象外(灰色)

coverage_test.go
おわり
Goを使ってみたくなりましたか?

Goとtest coverage