Golangユニットテスト
3036 ワード
Goのテストコードは に保存する必要があります.テスト関数の命名は である.テストファイルと被テストファイルは同じパッケージにある
デフォルトの
テストを行う
パフォーマンステストは、1回の実行平均時間を計算するのに十分な回数を実行する必要があります.デフォルトでは、
ベンチマークテストを実行する環境、オペレーティングシステム、アーキテクチャ.テストの回数は
テストオーバーライド率は、テストの有効性を測定する手段であり、テストオーバーライドは、テスト要件およびテスト例のオーバーライドまたは実行済みコードのオーバーライドによって表される.パラメータ
testing
パッケージは、go test
コマンドとともに使用される自動テストをサポートします.テストファイルとテスト関数は、次の条件を満たす必要があります.*_test.go
ファイルTestName
フォーマットに合致し、Name
は大文字で始まるfeibo.go
ファイルでは、Goでのテストを順次説明するために、フィボラッチシーケンスを生成する方法が定義されている.package main
import (
"errors"
)
func fibo(n int) int {
if n == 0 || n == 1 {
return 1
}
return fibo(n-1) + fibo(n-2)
}
func fibonacci(n int) (sequence []int, err error) {
if n < 0 {
return []int{}, errors.New("param shouldn't less than zero")
}
for i := 0; i <= n; i++ {
sequence = append(sequence, fibo(i))
}
return
}
ユニットテスト
デフォルトの
go test
は、go build
パラメータをサポートするすべてのユニットテスト関数を実行します.-v
は、すべてのテスト関数の実行の詳細を表示し、-run regex
は指定したテスト関数(正規表現)を実行します.// feibo_test.go
package main
import (
"errors"
"reflect"
"testing"
)
//
type fTest struct {
in int
out []int
err error
}
var fTests = []fTest{
{-1, []int{}, errors.New("param shouldn't less than zero")},
{0, []int{1}, nil},
{1, []int{1, 1}, nil},
{5, []int{1, 1, 2, 3, 5, 8}, nil},
}
var BenchSink int
func TestFibo(t *testing.T) {
for _, value := range fTests {
if res, _ := fibonacci(value.in); !reflect.DeepEqual(res, value.out) {
t.Errorf("fibonacci: [%v], actually: [%v]", value.out, res)
}
}
}
func BenchmarkFibo(b *testing.B) {
for i := 0; i < b.N; i++ {
for _, value := range fTests {
res, _ := fibonacci(value.in)
BenchSink += len(res)
}
}
}
テストを行う
D:\gotest>go test feibo.go feibo_test.go -v
=== RUN TestFibo
--- PASS: TestFibo (0.00s)
PASS
ok command-line-arguments 0.137s
データムテスト
パフォーマンステストは、1回の実行平均時間を計算するのに十分な回数を実行する必要があります.デフォルトでは、
go test
はパフォーマンステスト関数を実行せず、-bench
パラメータを使用する必要があります.go test -bench regexp
、正規表現に一致するベンチマークテストのみが実行されます.すべてのベンチマークテストを実行するには、-bench .
または-bench=.
を使用します.テスト結果は、一般的に次のように構成されています.D:\gotest>go test -bench=. feibo.go feibo_test.go -v
=== RUN TestFibo
--- PASS: TestFibo (0.00s)
goos: windows
goarch: amd64
BenchmarkFibo-12 5000000 262 ns/op
PASS
ok command-line-arguments 1.714s
ベンチマークテストを実行する環境、オペレーティングシステム、アーキテクチャ.テストの回数は
5000000
で、この数値は固定されず、b.N
は関数の実行時間に応じて適切な値を取ります.262 ns/op
は、1回の操作を実行するのに必要なナノ秒を表す.オーバーライド率のテスト
テストオーバーライド率は、テストの有効性を測定する手段であり、テストオーバーライドは、テスト要件およびテスト例のオーバーライドまたは実行済みコードのオーバーライドによって表される.パラメータ
-cover
を使用してカバー率分析を行った.テスト結果は、一般的に次のように構成されています.D:\gotest>go test -cover feibo.go feibo_test.go -v
=== RUN TestFibo
--- PASS: TestFibo (0.00s)
PASS
coverage: 100.0% of statements
ok command-line-arguments 0.132s coverage: 100.0% of statements