HapInS Developers Blog

HapInSが提供するエンジニアリングの情報サイト

VS CodeでGoファイルを保存時、自動テストが実行される

はじめに

こんにちは!

HapInSアドベントカレンダー2023、16日目です。

Goを書く際にどのエディターを使用していますか?

VS CodeVisual Studio Code)を使用している皆さんに、便利な一つの機能をご紹介させていただきます。

説明

VS CodeでGoファイルを保存する際、実装が進むにつれて自動でテストが実行される機能があります。

VS Codeでこれを有効にするには、以下の手順に従います。

1. Go拡張機能のインストール:

最初に、VS Code拡張機能である「Go」をインストールします。これにより、Go関連の開発機能が有効になります。

marketplace.visualstudio.com

2. Goツールチェーンのインストール:

Goツールチェーンをインストールして、必要なGoコマンドが利用可能であることを確認します。go testコマンドが含まれていることが重要です。

VS Codeでコマンドパレットを開くには、Ctrl+Shift+Pを押します。次に、「Go: Install/Update tools」を検索してください。

3. go.testOnSaveの設定:

settings.jsonファイルに、go.testOnSaveを有効にする設定を追加します。これにより、Goファイルを保存するたびに自動でテストが実行されます。

{
    "go.testOnSave": true
}

settings.jsonファイルは、通常は「File > Preferences > Settings」からアクセスできます。

4. coverageの設定:

カバレッジを色で可視化したい場合、次の設定をsettings.jsonファイルに追加してください。

"go.coverageDecorator": {
    "type": "gutter",
    "coveredHighlightColor": "rgba(64,128,128,0.5)",
    "uncoveredHighlightColor": "rgba(128,64,64,0.25)",
    "coveredGutterStyle": "blockgreen",
    "uncoveredGutterStyle": "slashred"
}

これで、Goファイルを保存するたびに自動でテストが実行されるようになります。

例えば、Addとゆう関数をテストします。

package gotest

func Add(a, b int) int {
    if a == 0 || b == 0 {
        return 0
    }

    return a + b
}

テストを下記のように書いています。

package gotest

import "testing"

func TestAdd(t *testing.T) {
    testCaseMap := map[string]struct {
        a, b, want int
    }{
        "正常": {
            a:    1,
            b:    2,
            want: 3,
        },
        "異常/a=0": {
            a:    0,
            b:    2,
            want: 0,
        },
        "異常/b=0": {
            a:    1,
            b:    0,
            want: 0,
        },
    }

    for name, tc := range testCaseMap {
        t.Run(name, func(t *testing.T) {
            if got := Add(tc.a, tc.b); got != tc.want {
                t.Errorf("Add() = %v, want %v", got, tc.want)
            }
        })
    }
}

add.go ファイルを保存すると、自動的にテストが実行され、その結果とカバレッジVS CodeOutput パネルに表示され、add.go ファイルの左側にもカバレッジが色で表示されるようになります。

最後に

皆さん、こちらで結構便利な機能をご紹介しました。ぜひ、ブロックを見ていたら、上記の設定を試してみてください。お役に立てれば幸いです。😊😊

明日もお楽しみに!