Download - Goとtest coverage
![Page 1: Goとtest coverage](https://reader034.vdocuments.site/reader034/viewer/2022042607/5564df94d8b42a0a178b58f6/html5/thumbnails/1.jpg)
GoとTest coverage
2014/1/17
![Page 2: Goとtest coverage](https://reader034.vdocuments.site/reader034/viewer/2022042607/5564df94d8b42a0a178b58f6/html5/thumbnails/2.jpg)
自己紹介Name : Sota NakajimaTwitter : @soldier_nakaji
Hobby :
![Page 3: Goとtest coverage](https://reader034.vdocuments.site/reader034/viewer/2022042607/5564df94d8b42a0a178b58f6/html5/thumbnails/3.jpg)
・既存言語のアイデアをもとに生み出された
新しいプログラミング言語 (2009/11/10誕生)
2014年にGoの時代が来る!(日経ソフトウェア記事)http://coin.nikkeibp.co.jp/coin/itpro/hansoku/nsw201402_1.html
Goとは
![Page 4: Goとtest coverage](https://reader034.vdocuments.site/reader034/viewer/2022042607/5564df94d8b42a0a178b58f6/html5/thumbnails/4.jpg)
・早いコンパイル速度、実行速度
・メモリ管理(GC)
・マルチコア活用(goroutine)
・便利なコマンド
・整形(go fmt)
・パッケージ収集(go get)
・テスト(go test)
・ドキュメント作成・閲覧(go doc)
Goの特徴
![Page 5: Goとtest coverage](https://reader034.vdocuments.site/reader034/viewer/2022042607/5564df94d8b42a0a178b58f6/html5/thumbnails/5.jpg)
・他の言語に戻れなくなる。
Goの特徴
![Page 6: Goとtest coverage](https://reader034.vdocuments.site/reader034/viewer/2022042607/5564df94d8b42a0a178b58f6/html5/thumbnails/6.jpg)
GoのTestの条件
・ ファイル名が _test.go で終わる
・ 関数名がTestXXX
・ シグネチャ func (t *testing.T)を持つ
Testを作成する1
![Page 7: Goとtest coverage](https://reader034.vdocuments.site/reader034/viewer/2022042607/5564df94d8b42a0a178b58f6/html5/thumbnails/7.jpg)
Testを作成する2coverage.go coverage_test.go
![Page 8: Goとtest coverage](https://reader034.vdocuments.site/reader034/viewer/2022042607/5564df94d8b42a0a178b58f6/html5/thumbnails/8.jpg)
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
![Page 9: Goとtest coverage](https://reader034.vdocuments.site/reader034/viewer/2022042607/5564df94d8b42a0a178b58f6/html5/thumbnails/9.jpg)
ちなみに...
Goの標準テストパッケージにはAssertがない
理由:
プログラマが適切なエラーハンドリングをしなくなるから
![Page 10: Goとtest coverage](https://reader034.vdocuments.site/reader034/viewer/2022042607/5564df94d8b42a0a178b58f6/html5/thumbnails/10.jpg)
しかし...
テスト用ライブラリ(Assert機能あり)がたくさんできてる・・・
・https://github.com/stretchr/testify
・https://github.com/onsi/ginkgo
・https://github.com/franela/goblin
・http://godoc.org/launchpad.net/gocheck
・
・
![Page 11: Goとtest coverage](https://reader034.vdocuments.site/reader034/viewer/2022042607/5564df94d8b42a0a178b58f6/html5/thumbnails/11.jpg)
Coverage測定する1
$ go test -cover ./...
ok covertest 0.001s coverage: 42.9% of statements
・Go1.2 (2013/12/1 Released) から使えるように http://golang.org/doc/go1.2#cover
・使い方はカンタン
![Page 12: Goとtest coverage](https://reader034.vdocuments.site/reader034/viewer/2022042607/5564df94d8b42a0a178b58f6/html5/thumbnails/12.jpg)
Coverage測定する2
$ go test -coverprofile=coverage.out ./...
ok covertest 0.002s coverage: 42.9% of statements
$ go tool cover -html=coverage.out
・テストが通っていない個所を特定する
![Page 13: Goとtest coverage](https://reader034.vdocuments.site/reader034/viewer/2022042607/5564df94d8b42a0a178b58f6/html5/thumbnails/13.jpg)
Coverage測定する3通過(緑)、対象外(灰色) coverage_test.go
![Page 14: Goとtest coverage](https://reader034.vdocuments.site/reader034/viewer/2022042607/5564df94d8b42a0a178b58f6/html5/thumbnails/14.jpg)
おわり
Goを使ってみたくなりましたか?