14
GoとTest coverage 2014/1/17

Goとtest coverage

Embed Size (px)

DESCRIPTION

第16回 Cloud Foundry 輪読会

Citation preview

Page 1: Goとtest coverage

GoとTest coverage

2014/1/17

Page 2: Goとtest coverage

自己紹介Name : Sota NakajimaTwitter : @soldier_nakaji

Hobby :

Page 3: Goとtest coverage

・既存言語のアイデアをもとに生み出された

 新しいプログラミング言語 (2009/11/10誕生)

2014年にGoの時代が来る!(日経ソフトウェア記事)http://coin.nikkeibp.co.jp/coin/itpro/hansoku/nsw201402_1.html

Goとは

Page 4: Goとtest coverage

・早いコンパイル速度、実行速度

・メモリ管理(GC)

・マルチコア活用(goroutine)

・便利なコマンド

 ・整形(go fmt)

 ・パッケージ収集(go get)

 ・テスト(go test)

 ・ドキュメント作成・閲覧(go doc)

 

Goの特徴

Page 5: Goとtest coverage

・他の言語に戻れなくなる。

Goの特徴

Page 6: Goとtest coverage

GoのTestの条件

・ ファイル名が _test.go で終わる

・ 関数名がTestXXX

・ シグネチャ func (t *testing.T)を持つ

Testを作成する1

Page 7: Goとtest coverage

Testを作成する2coverage.go coverage_test.go

Page 8: Goとtest coverage

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

ちなみに...

Goの標準テストパッケージにはAssertがない

理由:

プログラマが適切なエラーハンドリングをしなくなるから

Page 10: Goとtest coverage

しかし...

テスト用ライブラリ(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

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

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

Coverage測定する3通過(緑)、対象外(灰色) coverage_test.go

Page 14: Goとtest coverage

おわり

Goを使ってみたくなりましたか?