LoginSignup
3
2

More than 5 years have passed since last update.

IntelliJを使ってGolangのユニットテストをする

Posted at

IntelliJの環境を整える

assertを使ってテストコードを書く

  • Golangにはassert.Equalなどが標準では用意されていません
  • github.com/stretchr/testifyパッケージを使ってassertを使えるようにします
  • なぜGolangにassertがないかは、この記事に書いてあります
  • http://qiita.com/Jxck_/items/8717a5982547cfa54ebc#2-4
  • 一つの思想として尊重はしますが、テストコードを書くコストが大きく辛いので、自分はassertを使います
  • Ginという人気のGolangフレームワークのテストコードも、stretchr/testifyのassertを使っています

vendorフォルダのテストコードを実行しないようにする

  • vendorフォルダにサードパーティのパッケージがあると思いますが、それらのテストコードを実行しないようにしたい
  • そのためにはフォルダ構成を考えておく必要がある
  • 自分はプロジェクトのルートにappというフォルダを作り、その中に自分のコードを書くようにしています
  • そうするとappフォルダの中身のテストコードだけ実行するように指定して、vendorのテストを走らせないようにできます

テストコードを書く

  • ファイル名は{テストするコードを含むファイル名}_test.goとする。
  • _testをつけると、それはテストを含むファイルを認識される
  • テスコードはこんな感じで書くことになります
    • 関数名の先頭にTestをつける
user_test.go
package model

import (
    "testing"
    "github.com/stretchr/testify/assert"
)

func TestUser(t *testing.T) {
    user := User{
        FirstName:"Ichiro",
        LastName:"Suzuki",
        Username:"ichiro",
        Email:"ichiro@example.jp",
        DisplayName:"Hit King Ichiro"
    }

    assert.Equal(t, "Ichiro", user.FirstName)
    assert.Equal(t, "Suzuki", user.LastName)
    assert.Equal(t, "ichiro", user.Username)
    assert.Equal(t, "ichiro@example.jp", user.Email)
    assert.Equal(t, "Hit King Ichiro", user.DisplayName)
}

IntelliJでのテスト実行

  • メニュー > Run > Runで新たな実行設定を作る
  • Test framework: gotest
  • Test kind: Directory
  • Directory: {$GOPATH}/src/{パッケージ名}/app
    • $GOPATHとパッケージ名は環境に合わせる

これでappディレクトリにある *_test.go ファイルのテストが実行されます。

3
2
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
3
2