go1.5でテスト作成
概要
go言語でのテスト方法を調べるために、Goによるテスト例を参考にして、テストを作成しました。
作成するファイルは、テストコード(gotest_test.go)と被テストコード(gotest.go)です。パッケージ名はgotestです。作成する場所(ディレクトリ)はどこでもOKです。
手順
以下の手順で作成します。
- パッケージを作成する
- テストコードを作成する
- 被テストコードを作成する
- テストを実行する
テスト用のファイルの構成です。
$ tree gotest gotest ├── gotest.go └── gotest_test.go
1. パッケージを作成する
$ mkdir gotest
2. テストコードを作成する
テストコードには規約があります。
- ファイル名は必ず_test.goをつける。
- testingというパッケージをimportする。
- テスト関数名の先頭にTestをつける。
- テスト関数TestXxx()にパラメータtesting.Tをつける。
- テスト関数名func TestXxx(t *testing.T)のXxxには任意の英数字を使うことができる。ただし、小文字はNG
- テスト結果は、testing.TのError、Errorf、FailNow、Fatal、FatalIfメソッドで出力する。
- テストコードは書かれた順番に実行される。
$ cat gotest_test.go package gotest import ( "testing" ) func Test_Division_1(t *testing.T) { if i, e := Division(6, 2); i != 3 || e != nil { //try a unit test on function t.Error("除算関数のテストが通りません") // もし予定されたものでなければエラーを発生させま す。 } else { t.Log("はじめのテストがパスしました") //記録したい情報を記録します } }
3. 被テストコードを作成する
package gotest import ( "errors" ) func Division(a, b float64) (float64, error) { if b == 0 { return 0, errors.New("除数は0以外でなければなりません") } return a / b, nil }
4. テストを実行する
$ cd gotest $ go test PASS ok _/パス.../gotest 0.085s
カバレッジを求める
テストを実施する場合、コードのすべてのパスをテストしているかどうかカバレッジを調べることがよくあります。
go言語では、テスト実行に-coverオプションを追加するとカバレッジが出力されます。
$ go test -cover PASS coverage: 66.7% of statements ok _/パス.../gotest 0.085s
go tool coverを使うとカバレッジを可視化できます。
ファイル出力したテスト結果をツールに入力すると、ブラウザにカバレッジが出力されます。
$ go test -coverprofile=cover.out gotest --- FAIL: Test_Division_2 (0.00s) gotest_test.go:18: パスしません FAIL coverage: 66.7% of statements FAIL gotest 0.007s $ go tool cover -html=cover.out
日本語が文字化けしている...