0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Go標準パッケージtestingを利用したテスト方法

Posted at

概要

Goには標準でtestingというパッケージが用意されている。今回はこれを使用する。

テストコードの作成方法

テストコードを書くファイルは_test.goという形式で命名する。
Goのテストはテスト対象のソースコードと同じパッケージに含める必要がある。
以下のような関数を作成することでテストコードを作成していく。

func Test対象関数名(*testing.T) {
	hogehogehogehoge
}

実際のテストコード

decode()という関数をテストしている。

func TestDecode(t *testing.T) {
  post, err := decode("post.json")

  if err != nil {                      
    t.Error(err)
  }
  if post.Id != 1 {                                    
    t.Error("Wrong id, was expecting 1 but got", post.Id)
  }
  if post.Content != "Hello World!" {                         
    t.Error("Wrong content, was expecting 'Hello World!' but got", post.Content)
  }
}

ポイント

  • 関数を実行し、エラーが返って来ていれば、エラー出力をしてあげる。
  • t.Error()Log()を呼びだしてからFail()を呼び出すメソッド。Log()はエラーログにテキストを記録する。Fail()はテスト関数に失敗した記録を残しつつ、テストは継続して実行する。

テストの実行

_test.goファイルがあるディレクトリへ移動して、以下のコマンドを実行

go test

オプション

詳細出力

-v

カバレッジ確認

-cover

テストのスキップ

特定のテストをスキップすることもできる。
あらかじめ、スキップしたいテストを以下のようにif文で囲んでおく。

if testing.Short() {
	テストの内容
}

実行時に-shortオプションをつけて実行する

go test - short

テストの並列実行

テストを並列で実行することもできる。テスト時間の短縮に役立ちそう。
並行で実行できるようにしたいテストに以下のコードを追加する。テストケースの一番最初に一文加えるだけでいい。

t.Parallel()

実行時に-parallelオプションをつける。-parallelの後にスペース+数値を追記すれば、最大でいくつのテストケースを並列実行させたいか?を指定できる。

go test -parallel 3

ベンチマークテスト

ベンチマークを測定するためのテストケースを作成することもできる。
ベンチマークテストは以下のように書く。

func Benchmark対象関数名(b *testing.B) {
  for i := 0; i < b.N; i++ {
    対象の関数 
  }
}

ポイント

  • 引数に*testing.Bを取る。
  • ベンチマークを取りたいコードをb.N回繰り返してくれる。

ベンチマークテストの実行

実行時に-benchオプションをつける。全てのベンチマークテストを実行する場合は.を、そうでない場合は対象のファイルを指定する。

go test -bench .

-runオプションをつけると、機能テスト(ベンチマークテストではないもの)を無視してテストを実行できる。-runの後に実行したい機能テストを指定するとその機能テストだけは実行される。-run xのように存在しない機能テスト名を指定すれば全ての機能テストはスキップされる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?