関連この記事は以下の記事で触れなかったtesting/quickパッケージについてまとめる。#goTL;DRtesting/quickパッケージhttps://golang.org/pkg/testing/quick/testing/quickパッケージはランダムテストを行う新旧メソッドを比較するデグレ確認にも使うことができる。errorは与えられた関数fに対してランダムテストを行う。fの引数が構造体や文字列でもある程度は融通してランダムな引数を用意してくれる。fは戻り値がboolである必要があるので、必要に応じてラップ関数を作る。{t.Error(err.Error())}}第二引数のquick.Configを指定すれば、試行回数や与える引数の範囲、ランダムシードなどを設定できる。{t.Error(err.Error())}quick.CheckErrorquick.Check関数が戻すErrorはquick.CheckError型のポインタなので、任意の情報も取得できる。{t.Error(err)}}quick.CheckEqualhttps://golang.org/pkg/testing/quick/#CheckEqualquick.CheckEqual関数は2つの関数に対して乱数テストを実施し、出力結果に変化がないか確認をできる。Go本体のコードでは例えばsync.Mapの挙動の確認に利用されている。{t.Error(err)}}quick.CheckEqualErrorhttps://golang.org/pkg/testing/quick/#CheckEqualErrorquick.CheckEqual関数が戻すErrorもquick.CheckEqualErrorとして定義されているので、結果が不一致なときの各情報を取得できる。[]interface{}}quick.Valueただ単にランダムな値が欲しい場合は、quick.Value関数で生成できる。rand.New(rand.NewSource(0)))GeneratorインターフェースGeneratorインターフェースを実装していれば、独自定義した型もquick.Valueの引数に利用できる。Goについて書いています。