Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

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 ファイルのテストが実行されます。

roba4coding
プログラマ&ディベロッパー&ハッカー。エンジニアではありません。主にアプリの開発をやってます。勉強会には一切顔を出さず、たいていウェブで済ませて独学。家に技術本らしきものは一冊もありません。炎上案件に召喚され黒魔法で消火活動を行う暗黒プログラマです。記事の内容による損害について当方は一切責任を負いませんのでご了承ください。
https://note.mu/roba4coding
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした