いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

Goメモ-156 (go test で short モード時にスキップするテストを書く)(-short, t.Skip)

概要

よく忘れるのでここにメモメモ。

go test には、-short というオプションがあります。テストとしては用意しているけど、時間がかかるので、パパっとテストを実行したいときには含めたくないテストがある場合に使えます。

このオプションをつけて go test すると (*testing.T).Short() の値が true となります。

サンプル

以下のようなテストがあるとします。中身に意味はありません。

package lib_test

import (
    "testing"

    "github.com/devlights/try-golang/cmd/testing_short_feature/lib"
)

func TestAdd(t *testing.T) {
    if testing.Short() {
        t.SkipNow()
    }

    got := lib.Add(1, 2)
    if got != 3 {
        t.Errorf("[want] 3\t[got] %v\n", got)
    }
}

func TestSum(t *testing.T) {
    if testing.Short() {
        t.Skip("In short mode, this test will be skipped.")
    }

    got := lib.Sum(1, 2, 3, 4, 5)
    if got != 15 {
        t.Errorf("[want] 15\t[got] %v\n", got)
    }
}
   if testing.Short() {
        t.SkipNow()
    }

としている部分が、short モード時にスキップするようにしているところですね。

普通にテスト実行。

$ go test -v ./lib
=== RUN   TestAdd
--- PASS: TestAdd (0.00s)
=== RUN   TestSum
--- PASS: TestSum (0.00s)
PASS
ok      github.com/devlights/try-golang/cmd/testing_short_feature/lib   0.002s

いつもどおりですね。

-short オプションを付与して実行。

$ go test -v -short ./lib
=== RUN   TestAdd
--- SKIP: TestAdd (0.00s)
=== RUN   TestSum
    lib_test.go:22: In short mode, this test will be skipped.
--- SKIP: TestSum (0.00s)
PASS
ok      github.com/devlights/try-golang/cmd/testing_short_feature/lib   0.002s

ちゃんとSKIPと表示されていますね。

参考資料

golang.org

golang.org

dev.to


過去の記事については、以下のページからご参照下さい。

  • いろいろ備忘録日記まとめ

devlights.github.io

サンプルコードは、以下の場所で公開しています。

  • いろいろ備忘録日記サンプルソース置き場

github.com

github.com

github.com