いろいろ備忘録日記

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

Goメモ-235 (ランダムでテストの実行)(go test, shuffle)

概要

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

goでテストを行う際、たまにランダムでテストを実行してほしいときがあります。

その場合、以下のように指定します。

$ go test -shuffle on ./...

サンプル

Taskfile.yml

version: "3"

# -------------------------------------------------------------------------------
# $ go help testflag
#
#        -shuffle off,on,N
#            Randomize the execution order of tests and benchmarks.
#            It is off by default. If -shuffle is set to on, then it will seed
#            the randomizer using the system clock. If -shuffle is set to an
#            integer N, then N will be used as the seed value. In both cases,
#            the seed will be reported for reproducibility.
# -------------------------------------------------------------------------------
tasks:
  default:
    cmds:
      - task: run-normal
      - task: run-shuffle
  run-normal:
    cmds:
      - go test -v .
  run-shuffle:
    cmds:
      - go test -v -shuffle on .

lib_test.go

コードに意味はないです。

package main

import "testing"

func Test1(t *testing.T) {
}

func Test2(t *testing.T) {
}

func Test3(t *testing.T) {
}

実行結果

gitpod /workspace/try-golang (master) $ task -d examples/singleapp/testing_shuffle/
task: [run-normal] go test -v .
=== RUN   Test1
--- PASS: Test1 (0.00s)
=== RUN   Test2
--- PASS: Test2 (0.00s)
=== RUN   Test3
--- PASS: Test3 (0.00s)
PASS
ok      github.com/devlights/try-golang/examples/singleapp/testing_shuffle      0.002s
task: [run-shuffle] go test -v -shuffle on .
-test.shuffle 1659684827892975734
=== RUN   Test2
--- PASS: Test2 (0.00s)
=== RUN   Test3
--- PASS: Test3 (0.00s)
=== RUN   Test1
--- PASS: Test1 (0.00s)
PASS
ok      github.com/devlights/try-golang/examples/singleapp/testing_shuffle      0.003s

参考情報

https://pkg.go.dev/cmd/go#hdr-Testing_flags

Go言語による並行処理

Go言語による並行処理

Amazon


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

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