【Go】Goでのテストの書き方と実行方法
Goでは標準テストパッケージが提供されています。この記事では、テストするために勉強したことをまとめます。
テストの準備
下記を参考に。
golang.org
golang.org
まずは、下記のルールにそってファイルを準備をします。
- テストしたいメソッドが書かれているファイルを作成する
hellotest.go
func HelloWorld() (bool, error) { if _, err := fmt.Println("HelloWorld"); err != nil { return true, errors.New("Error") } return true, nil }
- テスト用のメソッドが書かれているファイルを作成する。テストしたいメソッドが書かれているファイル名に_testをつける
"testing"をimportするのを忘れないようにしてください。
hellotest_test.go
func TestHelloWorld(t *testing.T) { fmt.Println("testtest") if _, err := HelloWorld(); err != nil { t.Error() } }
テストの書き方
hellotest_test.goはテストメソッドを記述します。これはfunc TestXxx(*testing.T)このようなルールで記述してください。Testが先頭に来ることと、そのあとの単語は大文字から始めてください。
そして、テストメソッドの中でテストをしたいメソッドを呼び出し、エラー処理を書くことで完了です。そのため、メソッドを書くときはerrorを返り値を持つとテストの確認がしやすいです。
テストの実行方法
go test をコンソールから実行してください。そうすると、xxx_test.goで書いた処理が呼び出されます。
PASS ok github.com/chittai/test 0.006s
テストのカバレッジの確認
要は、書いたコードに対して、テストが実行されているコードがどの程度あるのかを確認します。go test -coverを実行すると標準出力から確認することができます。ただ、これだと、どこのコードが実行されていて、どこのコードが実行されていないのかわからないままです。
PASS coverage: 9.1% of statements ok github.com/chittai/test 0.006s
なので、下記コマンドを実行します。
- go test -coverprofile=cover.out ./
- go tool cover -html=cover.out
そうすると、下記のような画面が表示され、どのコードがテストされてどのコードがテストされていないのかがわかります。
感想
とりあえず、テストツールの使い方をまとめました。あとは、もう少し掘り下げられる要素がありそうなので調べたタイミングで書いていきたいなと思います。