...

パッケージ testing

概要 ▾

testing パッケージは,Go パッケージの自動化テストで用います。 Xxx が小文字で始まっていない func TestXxx(*testing.T) 形式の関数の実行を自動化する "gotest" コマンドと組み合わせて使用​​することを意図しています。 関数名はテストルーチンを識別するのに役立ちます。

これらの関数内で,エラー,失敗,または関連する方法を使用して失敗を知らせます。

新しいテストスイートを作成するには,ここで説明するように TestXxx 関数を含む _test.go で終わる名前のファイルを作成します。 テスト対象のファイルと同じパッケージにファイルを入れます。 このファイルは通常のパッケージビルドからは除外されますが, “go test” コマンドが実行されたときに含まれます。 詳細については, “go help test” と “go help testflag” を実行してください。

簡単なテスト関数は次のようになります。

funcTestAbs(t*testing.T){got:= 取得した場合は Abs(-1)!=1{t.Errorf("Abs(-1)= % d;want1" , got)}}

ベンチマーク

形式 func BenchmarkXxx(*testing.B) の関数はベンチマークと見なされ, -bench フラグが指定されているときは "go test" コマンドによって実行されます。 ベンチマークは順番に実行されます。

テストフラグの説明については, https://golang.org/cmd/go/#hdr-Testing_flags を参照してください。

ベンチマーク関数の例は次のようになります。 funcBenchmarkHello(b*testing.B){fori:=0; N<i。 i++{fmt.Sprintf("hello")}}

ベンチマーク関数はターゲットコードを b.N 回実行する必要があります。 ベンチマーク実行中,ベンチマーク関数が確実にタイミングを取れるよう十分長く持続するまで b.N が調整されます。 出力 BenchmarkHello 10000000 282 ns/op は,ループがループあたり 282 ns の速度で 10000000 回実行されたことを意味します。

ベンチマークを実行する前に高価な設定が必要な場合は,タイマーをリセットすることができます。

funcBenchmarkBigLen(b*testing.B){big:=NewBig()b.ResetTimer()fori:=0; N<i。 i++{big.Len()}}

ベンチマークで並列設定でパフォーマンスをテストする必要がある場合は, RunParallel ヘルパー関数を使用することができます。 このようなベンチマークは, go test -cpu フラグと一緒に使用することを目的としています。

funcBenchmarkTemplateParallel(b*testing.B){templ:=template.Must(template.New("test") 。 Parse("Hello, {{ 。 }}!"))b.RunParallel(func(pb*testing)PB){varbufbytes 。 pb のバッファ。 Next(){buf.Reset()templ.Execute(& buf , "World")}})}

パッケージはサンプルコードも実行し検証します。 関数の例には, "Output:" で始まり,テストの実行時に関数の標準出力と比較される最後の行のコメントが含まれることがあります。 (この比較では,先頭と末尾のスペースは無視されます。 ) これらは例の例です。

funcExampleHello(){fmt.Println("hello")// 出力 :hello}

funcExampleSalutations(){fmt.Println("hello , and")fmt.Println("goodbye")// 出力 ://helloand//goodbye}

コメントプレフィックス "Unordered output:" は "Output:" に似ていますが,任意の行の順序と一致します。

funcExamplePerm(){_ の場合,値 :=rangePerm(4){fmt.Println(value)}// 順序なし出力 :4//2//1//3//0}

出力コメントのないサンプル関数はコンパイルされますが実行されません。

パッケージ,関数 F ,型 T ,および型 T のメソッド M の例を宣言する命名規則は,次のとおりです。

funcExample(){...}funcExampleF(){...}funcExampleT(){...}funcExampleT_M(){...}

パッケージ / 型 / 関数 / メソッドのための複数の例の関数は,名前に明確な接尾辞を付けることによって渡されるかもしれません。 接尾辞は小文字で始まる必要があります。

funcExample_suffix(){...}funcExampleF_suffix(){...}funcExampleT_suffix(){...}funcExampleT_M_suffix(){...}

テストファイル全体が, 1 つの関数例,少なくとも 1 つの他の関数,型,変数,または定数宣言を含み,テスト関数またはベンチマーク関数を含まない場合,例として提示されます。

スキップ

*T または *B の Skip メソッドを呼び出すと,実行時にテストまたはベンチマークをスキップできます。

func TestTimeConsuming(t *testing.T) { テスト中なら。 .Short(){t.Skip(" テストをショートモードでスキップします。 ")}...}

サブテストとサブベンチマーク

T と B の Run メソッドでは,サブテストとサブベンチマークをそれぞれ定義する必要なく,サブテストとサブベンチマークを定義できます。 これにより,テーブル駆動型ベンチマークや階層テストの作成などの用途が可能になります。 また,共通の設定と破棄コードを共有する方法も提供します。

funcTestFoo(t*testing.T){//< セットアップコード >t.Run("A=1" , func(t*testing.T){...})t.Run("A=2" , func(t*testing.T){...})t.Run("B=1" , func(t*testing.T){...})//< 破棄コード >}

各サブテストとサブベンチマークには一意の名前があります。 最上位テストの名前と Run に渡される一連の名前をスラッシュで区切って組み合わせたもので,曖昧さを解消するためのオプションの末尾シーケンス番号です。

-run および -bench コマンドラインフラグの引数は,テストの名前と一致する固定されていない正規表現です。 サブテストなど,スラッシュで区切られた複数の要素を使用したテストでは,引数はそれ自体がスラッシュで区切られ,式は各 name 要素に順番に一致します。 固定されていないため,空の式は任意の文字列に一致します。 たとえば, "matching" を使用して " 名前に " が含まれることを意味します。

go test -run ” # すべてのテストを実行します。 gotest-runFoo#"TestFooBar" のように "Foo" にマッチするトップレベルのテストを実行します。 gotest-runFoo/A=#"Foo" に一致するトップレベルのテストでは, "A=" に一致するサブテストを実行します。 go test -run /A=1 # すべてのトップレベルテストで, "A=1" に一致するサブテストを実行します。

サブテストは並列処理の制御にも使用できます。 親テストは,そのすべてのサブテストが完了して初めて完了します。 この例では,定義されている可能性のある他のトップレベルのテストに関係なく,すべてのテストが互いに並行して,かつ互いにのみ実行されます。

func TestGroupedParallel(t *testing.T) { の場合, tc := 範囲テスト {tc :=tc// キャプチャ範囲変数 t.Run(tc.Name , func(t*testing.T){t.Parallel()...})}}

競合検出プログラムが 8192 個の平行実行ルーチンを超えるとプログラムが強制終了されるため, -race フラグを設定して並列テストを実行するときは注意してください。

並列サブテストが完了するまで run は返されないため,一連の並列テストの後にクリーンアップする方法が渡されます。

funcTestTeardownParallel(t*testing.T){// この Run は並列テストが終了するまで戻りません。 t.Run("group" , func(t*testing.T){t.Run("Test1" , parallelTest1)t.Run("Test2" , parallelTest2)t.Run("Test3" , parallelTest3)})//< ティアダウンコード >}

メイン

テストの前または後に,テストプログラムで追加の設定または破棄を行う必要がある場合があります。 どのコードがメインスレッドで実行されるかを制御することがテストに必要なこともあります。 テストファイルに関数が含まれている場合,これらおよび他のケースをサポートするには

func TestMain(m *testing.M)

生成されたテストはテストを直接実行する代わりに TestMain(m) を呼び出します。 TestMain はメインのゴルーチンで実行され, m.Run の呼び出しの周りに必要なセットアップとティアダウンを何でもすることができます。 それはそれから m.Run の結果で os.Exit を呼ぶべきです。 TestMain が呼び出されたとき, flag.Parse は実行されていません。 TestMain がテストパッケージのものも含めてコマンドラインフラグに依存している場合は, flag.Parse を明示的に呼び出す必要があります。

TestMain の簡単な実装は次のとおりです。

func TestMain(m *testing.M) {
	// TestMain がフラグを使用する場合は,ここで flag.Parse() を呼び出します。
os.Exit(m.Run())}

目次 ▾

func AllocsPerRun(runs int, f func()) (avg float64)
func CoverMode() string
func Coverage() float64
func Init()
func Main(matchString func(pat, str string) (bool, error), tests []InternalTest, benchmarks []InternalBenchmark, examples []InternalExample)
func RegisterCover(c Cover)
func RunBenchmarks(matchString func(pat, str string) (bool, error), benchmarks []InternalBenchmark)
func RunExamples(matchString func(pat, str string) (bool, error), examples []InternalExample) (ok bool)
func RunTests(matchString func(pat, str string) (bool, error), tests []InternalTest) (ok bool)
func Short() bool
func Verbose() bool
type B
    func (c *B) Error(args ...interface{})
    func (c *B) Errorf(format string, args ...interface{})
    func (c *B) Fail()
    func (c *B) FailNow()
    func (c *B) Failed() bool
    func (c *B) Fatal(args ...interface{})
    func (c *B) Fatalf(format string, args ...interface{})
    func (c *B) Helper()
    func (c *B) Log(args ...interface{})
    func (c *B) Logf(format string, args ...interface{})
    func (c *B) Name() string
    func (b *B) ReportAllocs()
    func (b *B) ReportMetric(n float64, unit string)
    func (b *B) ResetTimer()
    func (b *B) Run(name string, f func(b *B)) bool
    func (b *B) RunParallel(body func(*PB))
    func (b *B) SetBytes(n int64)
    func (b *B) SetParallelism(p int)
    func (c *B) Skip(args ...interface{})
    func (c *B) SkipNow()
    func (c *B) Skipf(format string, args ...interface{})
    func (c *B) Skipped() bool
    func (b *B) StartTimer()
    func (b *B) StopTimer()
type BenchmarkResult
    func Benchmark(f func(b *B)) BenchmarkResult
    func (r BenchmarkResult) AllocedBytesPerOp() int64
    func (r BenchmarkResult) AllocsPerOp() int64
    func (r BenchmarkResult) MemString() string
    func (r BenchmarkResult) NsPerOp() int64
    func (r BenchmarkResult) String() string
type Cover
type CoverBlock
type InternalBenchmark
type InternalExample
type InternalTest
type M
    func MainStart(deps testDeps, tests []InternalTest, benchmarks []InternalBenchmark, examples []InternalExample) *M
    func (m *M) Run() int
type PB
    func (pb *PB) Next() bool
type T
    func (c *T) Error(args ...interface{})
    func (c *T) Errorf(format string, args ...interface{})
    func (c *T) Fail()
    func (c *T) FailNow()
    func (c *T) Failed() bool
    func (c *T) Fatal(args ...interface{})
    func (c *T) Fatalf(format string, args ...interface{})
    func (c *T) Helper()
    func (c *T) Log(args ...interface{})
    func (c *T) Logf(format string, args ...interface{})
    func (c *T) Name() string
    func (t *T) Parallel()
    func (t *T) Run(name string, f func(t *T)) bool
    func (c *T) Skip(args ...interface{})
    func (c *T) SkipNow()
    func (c *T) Skipf(format string, args ...interface{})
    func (c *T) Skipped() bool
type TB

B.ReportMetric
B.RunParallel

パッケージファイル

allocs.go benchmark.go cover.go example.go match.go run_example.go testing.go

func AllocsPerRun 1.1

func AllocsPerRun(runs int, f func()) (avg float64)

AllocsPerRun は, f の呼び出し中の平均割り当て数を返します。 戻り値は float64 型ですが,常に整数値になります。

割り当て数を計算するために,関数は最初にウォームアップとして 1 回実行されます。 指定された実行回数にわたる平均割り当て数が測定されて返されます。

AllocsPerRun は,測定中に GOMAXPROCS を 1 に設定し,戻る前に復元します。

func CoverMode 1.8

func CoverMode() string

CoverMode は,テストカバレッジモードが何に設定されているかを報告します。 値は "set", "count" ,または " アトミック " です。 テストカバレッジが有効になっていない場合,戻り値は空になります。

func Coverage 1.4

func Coverage() float64

Coverage は,現在のコードカバレッジを [0, 1] の範囲内の端数として報告します。 カバレッジが有効になっていない場合, Coverage は 0 を返します。

一連のテストケースを大量に実行する場合は,各テストケースの後に [カバレッジ] をチェックすると,どのテストケースで新しいコードパスが実行されているかを特定できます。 'go test -cover' および 'go tool cover' によって生成されたレポートに代わるものではありません。

func Init

func Init()

Init registers testing flags. These flags are automatically registered by the "go test" command before running test functions, so Init is only needed when calling functions such as Benchmark without using "go test".

Init has no effect if it was already called.

func Main

func Main(matchString func(pat, str string) (bool, error), tests []InternalTest, benchmarks []InternalBenchmark, examples []InternalExample)

Main は, "go test" コマンドの実装の一部である内部機能です。 クロスパッケージであり, " 内部 " パッケージよりも前のものであるため,エクスポートされました。 これは "go test" では使用されなくなりましたが, Main を使用して "go test" をシミュレートする他のシステムでは可能な限り保持されますが,テストパッケージに新しい機能が追加されるため Main は更新できないことがあります。 "go test" をシミュレートするシステムは MainStart を使用するように更新する必要があります。

func RegisterCover 1.2

func RegisterCover(c Cover)

RegisterCover はテストのためのカバレッジデータアキュムレータを記録します。 注 : この機能はテストインフラストラクチャの内部にあり,変更される可能性があります。 Go 1 互換性ガイドラインではまだカバーされていません。

func RunBenchmarks

func RunBenchmarks(matchString func(pat, str string) (bool, error), benchmarks []InternalBenchmark)

内部関数ですが,クロスパッケージなのでエクスポートされます。 "go test" コマンドの実装の一部です。

func RunExamples

func RunExamples(matchString func(pat, str string) (bool, error), examples []InternalExample) (ok bool)

内部関数ですが,クロスパッケージなのでエクスポートされます。 "go test" コマンドの実装の一部です。

func RunTests

func RunTests(matchString func(pat, str string) (bool, error), tests []InternalTest) (ok bool)

内部関数ですが,クロスパッケージなのでエクスポートされます。 "go test" コマンドの実装の一部です。

func Short

func Short() bool

Short は, -test.short フラグが設定されているかどうかを報告します。

func Verbose 1.1

func Verbose() bool

詳細は, -test.v フラグが設定されているかどうかを報告します。

type B

B はベンチマークのタイミングを管理し,実行する反復回数を指定するためにベンチマーク関数に渡される型です。

ベンチマーク関数が FailNow, Fatal, Fatalf, SkipNow, Skip ,または Skipf のいずれかのメソッドを返すか呼び出すと,ベンチマークは終了します。 これらのメソッドは,ベンチマーク関数を実行しているゴルーチンからのみ呼び出す必要があります。 Log や Error のバリエーションなどの他のレポート方法は,複数のゴルーチンから平行に呼び出すことができます。

テストと同様に,ベンチマークログは実行中に蓄積され,実行時に標準エラーにダンプされます。 テストとは異なり,ベンチマークログは常に出力され,ベンチマーク結果に影響を与える可能性のある出力を隠さないようにします。

type B struct {
    N int
    // エクスポートされていないフィールドがあります
}

func (*B) Error

func (c *B) Error(args ...interface{})

エラーは Log の後に Fail が続くことと同じです。

func (*B) Errorf

func (c *B) Errorf(format string, args ...interface{})

Errorf は Logf の後に Fail を続けるのと同じです。

func (*B) Fail

func (c *B) Fail()

失敗すると,関数は失敗したものとしてマークされますが,実行は継続されます。

func (*B) FailNow

func (c *B) FailNow()

FailNow は,その関数に失敗したことをマークし, runtime.Goexit (現在のゴルーチン内のすべての遅延呼び出しを実行します) を呼び出すことによってその実行を停止します。 実行は次のテストまたはベンチマークで続行されます。 FailNow は,テスト中に作成された他のゴルーチンからではなく,テストまたはベンチマーク機能を実行しているゴルーチンから呼び出す必要があります。 FailNow を呼び出しても,これらの他のルーチンは停止しません。

func (*B) Failed

func (c *B) Failed() bool

失敗は,機能が失敗したかどうかを報告します。

func (*B) Fatal

func (c *B) Fatal(args ...interface{})

Fatal は Log の後に FailNow を続けたものと同じです。

func (*B) Fatalf

func (c *B) Fatalf(format string, args ...interface{})

Fatalf は Logf の後に FailNow を続けたものと同じです。

func (*B) Helper 1.9

func (c *B) Helper()

ヘルパーは呼び出し側の関数をテストヘルパー関数としてマークします。 ファイルと行の情報を表示するとき,その機能はスキップされます。 ヘルパーは複数のゴルーチンから平行に呼ばれるかもしれません。

func (*B) Log

func (c *B) Log(args ...interface{})

Log は, Println と同様に,デフォルトのフォーマットを使用して引数をフォーマットし,そのテキストをエラーログに記録します。 テストの場合,テキストはテストが失敗した場合,または -test.v フラグが設定されている場合にのみ表示されます。 ベンチマークの場合,パフォーマンスが -test.v フラグの値に依存するのを避けるために,テキストは常に表示されます。

func (*B) Logf

func (c *B) Logf(format string, args ...interface{})

Logf は, Printf と同様の形式に従って引数をフォーマットし,そのテキストをエラーログに記録します。 渡されない場合,最後の改行が追加されます。 テストの場合,テキストはテストが失敗した場合,または -test.v フラグが設定されている場合にのみ表示されます。 ベンチマークの場合,パフォーマンスが -test.v フラグの値に依存するのを避けるために,テキストは常に表示されます。

func (*B) Name 1.8

func (c *B) Name() string

名前は,実行中のテストまたはベンチマークの名前を返します。

func (*B) ReportAllocs 1.1

func (b *B) ReportAllocs()

ReportAllocs はこのベンチマークの malloc 統計を有効にします。 これは -test.benchmem の設定と同じですが, ReportAllocs を呼び出すベンチマーク関数にのみ影響します。

func (*B) ReportMetric

func (b *B) ReportMetric(n float64, unit string)

ReportMetric adds "n unit" to the reported benchmark results. If the metric is per-iteration, the caller should divide by b.N, and by convention units should end in "/op". ReportMetric overrides any previously reported value for the same unit. ReportMetric panics if unit is the empty string or if unit contains any whitespace. If unit is a unit normally reported by the benchmark framework itself (such as "allocs/op"), ReportMetric will override that metric. Setting "ns/op" to 0 will suppress that built-in metric.

コード:

// This reports a custom benchmark metric relevant to a
// specific algorithm (in this case, sorting).
testing.Benchmark(func(b *testing.B) {
    var compares int64
    for i := 0; i < b.N; i++ {
        s := []int{5, 4, 3, 2, 1}
        sort.Slice(s, func(i, j int) bool {
            compares++
            return s[i] < s[j]
        })
    }
    // This metric is per-operation, so divide by b.N and
    // report it as a "/op" unit.
    b.ReportMetric(float64(compares)/float64(b.N), "compares/op")
})

func (*B) ResetTimer

func (b *B) ResetTimer()

ResetTimer zeroes the elapsed benchmark time and memory allocation counters and deletes user-reported metrics. It does not affect whether the timer is running.

func (*B) Run 1.7

func (b *B) Run(name string, f func(b *B)) bool

与えられた名前のサブベンチマークとしてベンチマーク f を実行します。 失敗したかどうかを報告します。

サブベンチマークは他のベンチマークと同じです。 Run を少なくとも 1 回呼び出すベンチマークは,それ自体は測定されず, N=1 で 1 回呼び出されます。

func (*B) RunParallel 1.3

func (b *B) RunParallel(body func(*PB))

RunParallel はベンチマークを並列に実行します。 それは複数のゴルーチンを作成し,それらの間に b.N の繰り返しを分配します。 ゴルーチンの数はデフォルトで GOMAXPROCS になります。 CPU に依存しないベンチマークの並列処理を増やすには, RunParallel の前に SetParallelism を呼び出します。 RunParallel は通常, go test -cpu フラグと一緒に使用されます。

body 関数は各 goroutine で実行されます。 ゴルーチンローカルな状態を設定してから, pb.Next が false を返すまで繰り返します。 StartTimer, StopTimer ,または ResetTimer 関数はグローバルに影響するため,使用しないでください。 Run も呼び出さないでください。

コード:

// Parallel benchmark for text/template.Template.Execute on a single object.
testing.Benchmark(func(b *testing.B) {
    templ := template.Must(template.New("test").Parse("Hello, {{.}}!"))
    // RunParallel will create GOMAXPROCS goroutines
    // and distribute work among them.
    b.RunParallel(func(pb *testing.PB) {
        // Each goroutine has its own bytes.Buffer.
        var buf bytes.Buffer
        for pb.Next() {
            // The loop body is executed b.N times total across all goroutines.
            buf.Reset()
            templ.Execute(&buf, "World")
        }
    })
})

func (*B) SetBytes

func (b *B) SetBytes(n int64)

SetBytes は, 1 回の操作で処理されたバイト数を記録します。 これが呼び出されると,ベンチマークは ns/op と MB/s を報告します。

func (*B) SetParallelism 1.3

func (b *B) SetParallelism(p int)

SetParallelism は, RunParallel によって使用されるゴルーチンの数を p*GOMAXPROCS に設定します。 通常, CPU バウンドのベンチマークでは SetParallelism を呼び出す必要はありません。 p が 1 より小さい場合,この呼び出しは効果がありません。

func (*B) Skip 1.1

func (c *B) Skip(args ...interface{})

Skip は, Log の後に SkipNow を続けたものと同じです。

func (*B) SkipNow 1.1

func (c *B) SkipNow()

SkipNow はテストがスキップされたものとしてマークし, runtime.Goexit を呼び出してテストの実行を停止します。 テストが失敗し (エラー,エラー,失敗を参照) ,スキップされた場合でも,テストは失敗したと見なされます。 実行は次のテストまたはベンチマークで続行されます。 FailNow もご覧ください。 SkipNow は,テスト中に作成された他のゴルーチンからではなく,テストを実行しているゴルーチンから呼び出される必要があります。 SkipNow を呼び出しても,これらの他のルーチンは停止しません。

func (*B) Skipf 1.1

func (c *B) Skipf(format string, args ...interface{})

Skipf は, Logf の後に SkipNow を続けたものと同じです。

func (*B) Skipped 1.1

func (c *B) Skipped() bool

スキップされたレポートはテストがスキップされたかどうかを示します。

func (*B) StartTimer

func (b *B) StartTimer()

StartTimer starts timing a test. This function is called automatically before a benchmark starts, but it can also be used to resume timing after a call to StopTimer.

func (*B) StopTimer

func (b *B) StopTimer()

StopTimer はテストの計時を停止します。 これは,測定したくない複雑な初期化を実行している間,タイマーを一時停止するために使用できます。

type BenchmarkResult

ベンチマークの結果

type BenchmarkResult struct {
    N         int           // 繰り返し数
    T         time.Duration // かかった合計時間。
    Bytes     int64         // 1 回の繰り返しで処理されたバイト数
    MemAllocs uint64        // メモリ割り当ての総数。; added in Go 1.1
    MemBytes  uint64        // 割り当てられた合計バイト数。; added in Go 1.1

    // Extra records additional metrics reported by ReportMetric.
    Extra map[string]float64
}

func Benchmark

func Benchmark(f func(b *B)) BenchmarkResult

Benchmark benchmarks a single function. It is useful for creating custom benchmarks that do not use the "go test" command.

If f depends on testing flags, then Init must be used to register those flags before calling Benchmark and before calling flag.Parse.

f が Run を呼び出すと,結果は, Run を呼び出さないすべてのサブベンチマークを 1 つのベンチマークで順番に実行した推定値になります。

func (BenchmarkResult) AllocedBytesPerOp 1.1

func (r BenchmarkResult) AllocedBytesPerOp() int64

AllocedBytesPerOp returns the "B/op" metric, which is calculated as r.MemBytes / r.N.

func (BenchmarkResult) AllocsPerOp 1.1

func (r BenchmarkResult) AllocsPerOp() int64

AllocsPerOp returns the "allocs/op" metric, which is calculated as r.MemAllocs / r.N.

func (BenchmarkResult) MemString 1.1

func (r BenchmarkResult) MemString() string

MemString は 'go test' と同じ形式で r.AllocedBytesPerOp と r.AllocsPerOp を返します。

func (BenchmarkResult) NsPerOp

func (r BenchmarkResult) NsPerOp() int64

NsPerOp returns the "ns/op" metric.

func (BenchmarkResult) String

func (r BenchmarkResult) String() string

String returns a summary of the benchmark results. It follows the benchmark result line format from https://golang.org/design/14313-benchmark-format, not including the benchmark name. Extra metrics override built-in metrics of the same name. String does not include allocs/op or B/op, since those are reported by MemString.

type Cover 1.2

表紙はテストカバレッジチェックに関する情報を記録します。 注 : この構造体はテストインフラストラクチャの内部にあり,変更される可能性があります。 Go 1 互換性ガイドラインではまだカバーされていません。

type Cover struct {
    Mode            string
    Counters        map[string][]uint32
    Blocks          map[string][]CoverBlock
    CoveredPackages string
}

type CoverBlock 1.2

CoverBlock は, 1 つの基本ブロックのカバレッジデータを記録します。 エディタの場合と同様に,フィールドには 1 から始まるインデックスが付けられます。 たとえば,ファイルの開始行は 1 番です。 列はバイト単位で測定されます。 注 : この構造体はテストインフラストラクチャの内部にあり,変更される可能性があります。 Go 1 互換性ガイドラインではまだカバーされていません。

type CoverBlock struct {
    Line0 uint32 // ブロック開始の行番号
    Col0  uint16 // ブロック開始の列番号
    Line1 uint32 // ブロック終了の行番号
    Col1  uint16 // ブロック終了の列番号
    Stmts uint16 // このブロックに含まれるステートメントの数
}

type InternalBenchmark

内部型ですが,クロスパッケージなのでエクスポートされます。 "go test" コマンドの実装の一部です。

type InternalBenchmark struct {
    Name string
    F    func(b *B)
}

type InternalExample

type InternalExample struct {
    Name      string
    F         func()
    Output    string
    Unordered bool // Go 1.7
}

type InternalTest

内部型ですが,クロスパッケージなのでエクスポートされます。 "go test" コマンドの実装の一部です。

type InternalTest struct {
    Name string
    F    func(*T)
}

type M 1.4

M は,実際のテストを実行するために TestMain 関数に渡される型です。

type M struct {
    // エクスポートされていないフィールドがあります
}

func MainStart 1.8

func MainStart(deps testDeps, tests []InternalTest, benchmarks []InternalBenchmark, examples []InternalExample) *M

MainStart は 'go test' によって生成されたテストで使用するためのものです。 これは直接呼び出されることを意図しておらず, Go 1 互換性文書の対象ではありません。 リリースごとに署名が変わる可能性があります。

func (*M) Run 1.4

func (m *M) Run() int

テストを実行します。 os.Exit に渡す終了コードを返します。

type PB 1.3

並列ベンチマークを実行するために, PB が RunParallel によって使用されます。

type PB struct {
    // エクスポートされていないフィールドがあります
}

func (*PB) Next 1.3

func (pb *PB) Next() bool

Next は,実行する反復がまだあるかどうかを報告します。

type T

T はテスト状態を管理しフォーマットされたテストログをサポートするために Test 関数に渡される型です。 ログは実行中に蓄積され,実行されると標準出力にダンプされます。

その Test 関数が FailNow, Fatal, Fatalf, SkipNow, Skip ,または Skipf のいずれかのメソッドを返すか呼び出すと,テストは終了します。 これらのメソッドは, Parallel メソッドと同様に, Test 関数を実行しているゴルーチンからのみ呼び出す必要があります。

Log や Error のバリエーションなどの他のレポート方法は,複数のゴルーチンから平行に呼び出すことができます。

type T struct {
    // エクスポートされていないフィールドがあります
}

func (*T) Error

func (c *T) Error(args ...interface{})

エラーは Log の後に Fail が続くことと同じです。

func (*T) Errorf

func (c *T) Errorf(format string, args ...interface{})

Errorf は Logf の後に Fail を続けるのと同じです。

func (*T) Fail

func (c *T) Fail()

失敗すると,関数は失敗したものとしてマークされますが,実行は継続されます。

func (*T) FailNow

func (c *T) FailNow()

FailNow は,その関数に失敗したことをマークし, runtime.Goexit (現在のゴルーチン内のすべての遅延呼び出しを実行します) を呼び出すことによってその実行を停止します。 実行は次のテストまたはベンチマークで続行されます。 FailNow は,テスト中に作成された他のゴルーチンからではなく,テストまたはベンチマーク機能を実行しているゴルーチンから呼び出す必要があります。 FailNow を呼び出しても,これらの他のルーチンは停止しません。

func (*T) Failed

func (c *T) Failed() bool

失敗は,機能が失敗したかどうかを報告します。

func (*T) Fatal

func (c *T) Fatal(args ...interface{})

Fatal は Log の後に FailNow を続けたものと同じです。

func (*T) Fatalf

func (c *T) Fatalf(format string, args ...interface{})

Fatalf は Logf の後に FailNow を続けたものと同じです。

func (*T) Helper 1.9

func (c *T) Helper()

ヘルパーは呼び出し側の関数をテストヘルパー関数としてマークします。 ファイルと行の情報を表示するとき,その機能はスキップされます。 ヘルパーは複数のゴルーチンから平行に呼ばれるかもしれません。

func (*T) Log

func (c *T) Log(args ...interface{})

Log は, Println と同様に,デフォルトのフォーマットを使用して引数をフォーマットし,そのテキストをエラーログに記録します。 テストの場合,テキストはテストが失敗した場合,または -test.v フラグが設定されている場合にのみ表示されます。 ベンチマークの場合,パフォーマンスが -test.v フラグの値に依存するのを避けるために,テキストは常に表示されます。

func (*T) Logf

func (c *T) Logf(format string, args ...interface{})

Logf は, Printf と同様の形式に従って引数をフォーマットし,そのテキストをエラーログに記録します。 渡されない場合,最後の改行が追加されます。 テストの場合,テキストはテストが失敗した場合,または -test.v フラグが設定されている場合にのみ表示されます。 ベンチマークの場合,パフォーマンスが -test.v フラグの値に依存するのを避けるために,テキストは常に表示されます。

func (*T) Name 1.8

func (c *T) Name() string

名前は,実行中のテストまたはベンチマークの名前を返します。

func (*T) Parallel

func (t *T) Parallel()

並列テストは,このテストが他の並列テストと並列に (そしてそれとのみ) 実行されることを示します。 -test.count または -test.cpu を使用してテストを複数回実行した場合, 1 つのテストの複数のインスタンスが互いに並行して実行されることはありません。

func (*T) Run 1.7

func (t *T) Run(name string, f func(t *T)) bool

run は, name という t のサブテストとして f を実行します。 これは f を別の goroutine で実行し, f が戻るか,または t.Parallel を呼び出して並列テストになるまでブロックします。 f が成功した (または少なくとも t.Parallel を呼び出す前に失敗しなかった) かどうかをレポートします。

run は複数のゴルーチンから平行に呼び出されることがありますが,そのような呼び出しはすべて, t の外部テスト関数が戻る前に戻る必要があります。

func (*T) Skip 1.1

func (c *T) Skip(args ...interface{})

Skip は, Log の後に SkipNow を続けたものと同じです。

func (*T) SkipNow 1.1

func (c *T) SkipNow()

SkipNow はテストがスキップされたものとしてマークし, runtime.Goexit を呼び出してテストの実行を停止します。 テストが失敗し (エラー,エラー,失敗を参照) ,スキップされた場合でも,テストは失敗したと見なされます。 実行は次のテストまたはベンチマークで続行されます。 FailNow もご覧ください。 SkipNow は,テスト中に作成された他のゴルーチンからではなく,テストを実行しているゴルーチンから呼び出される必要があります。 SkipNow を呼び出しても,これらの他のルーチンは停止しません。

func (*T) Skipf 1.1

func (c *T) Skipf(format string, args ...interface{})

Skipf は, Logf の後に SkipNow を続けたものと同じです。

func (*T) Skipped 1.1

func (c *T) Skipped() bool

スキップされたレポートはテストがスキップされたかどうかを示します。

type TB 1.9

TB は T と B に共通のインターフェースです。

type TB interface {
    Error(args ...interface{})
    Errorf(format string, args ...interface{})
    Fail()
    FailNow()
    Failed() bool
    Fatal(args ...interface{})
    Fatalf(format string, args ...interface{})
    Log(args ...interface{})
    Logf(format string, args ...interface{})
    Name() string
    Skip(args ...interface{})
    SkipNow()
    Skipf(format string, args ...interface{})
    Skipped() bool
    Helper()
    // contains filtered or unexported methods
}

サブディレクトリ

名前 概要
..
iotest iotest パッケージは,主にテストで有用な Reader と Writer を実装します。
quick quick パッケージは,ブラックボックステスト用の便利関数を実装します。