Golang学習ノート-テスト
2719 ワード
Goの標準ライブラリには、テストに関連するいくつかのライブラリが用意されています.その中で最も主要なのはtestingパッケージです.testingパッケージはgo testコマンドとソースコードのすべてを必要とします.test.go接尾辞の最後のテストファイルとともに使用する、一般的なテストファイルの名前は、mainなどのテストソースファイルの名前に対応する.goのテストファイル名はmian_test.go.
ソースコードをテストするには、テストファイルに次の形式のテスト関数を作成する必要があります.ここで、Xxxの頭文字は大文字の英字でなければなりません.テスト関数の内部では、Error、Failなどの一連の方法でテストに失敗したことを表すことができます.
testing.T構造にはいくつかの非常に有用な方法がある. Log():指定されたテキストをログに記録します. Logf():指定されたフォーマットに従って、指定されたテキストをログに記録します. Fail():テスト関数は失敗したとマークされますが、テスト関数の実行を続行できます. FailNow():テスト関数を失敗としてマークし、テスト関数の実行を停止します. Error():Log+Fail. Errorf():Logf+Fail. Fatal():Log+FailNow. Fatalf():Logf+FailNow. Skip():このテスト例をスキップします.
go testを使用すると、-vを使用してテストの詳細を取得し、-coverを使用してテスト例のコードのオーバーライド率を取得できます.
テスト例の先頭にtestingを呼び出す.TのParallelメソッドを使用すると、テスト・インスタンスを並列に実行できます.フラグ-parallelを使用すると、最大並列実行のテスト・インスタンス数を指定できます.デフォルトはGOMAXPROCSです.
ベンチマークテストは主にパフォーマンスをテストするために使用され、各ベンチマークテスト関数は以下のフォーマットを満たす必要があります.
ベンチマークテストの例を実行するには、go testコマンドを実行するときにフラグ-benchを使用し、このフラグのパラメータとして正規表現を使用して、自分が実行したいベンチマークテストファイルを識別する必要があります.ディレクトリの下のすべてのベンチマークテストファイルを実行する必要がある場合は、ポイントを-benchのパラメータとして使用するだけです.
関数の応答時間をテストするためには,正確な測定値が得られるまで,被テスト関数をb.N回実行する必要がある.
上記のコマンドは、ベンチマークテストと機能テストを実行します.必要に応じて、ユーザーはフラグ-runを実行することによって機能テストを無視することができます.-runフラグは、実行する必要がある機能テストの例を指定するために使用されます.もし私たちが存在しない機能テストの名前を-runフラグのパラメータとして使用すると、すべての機能テストは無視されます.たとえば、次のようになります.
機能テスト
ソースコードをテストするには、テストファイルに次の形式のテスト関数を作成する必要があります.ここで、Xxxの頭文字は大文字の英字でなければなりません.テスト関数の内部では、Error、Failなどの一連の方法でテストに失敗したことを表すことができます.
func TestXxx(t *testing.T){...}
testing.T構造にはいくつかの非常に有用な方法がある.
package main
func add(a int,b int) int{
return a+b
}
package main
import "testing"
func TestAdd(t *testing.T){
if 5!=add(2,3){
t.Fail()
}
}
=== RUN TestAdd
--- PASS: TestAdd (0.00s)
PASS
coverage: 100.0% of statements in ./...
go testを使用すると、-vを使用してテストの詳細を取得し、-coverを使用してテスト例のコードのオーバーライド率を取得できます.
go test -v -cover
パラレルテスト
テスト例の先頭にtestingを呼び出す.TのParallelメソッドを使用すると、テスト・インスタンスを並列に実行できます.フラグ-parallelを使用すると、最大並列実行のテスト・インスタンス数を指定できます.デフォルトはGOMAXPROCSです.
go test -v -parallel 3
データムテスト
ベンチマークテストは主にパフォーマンスをテストするために使用され、各ベンチマークテスト関数は以下のフォーマットを満たす必要があります.
func BenchmarkXxx(b *testing.B){...}
ベンチマークテストの例を実行するには、go testコマンドを実行するときにフラグ-benchを使用し、このフラグのパラメータとして正規表現を使用して、自分が実行したいベンチマークテストファイルを識別する必要があります.ディレクトリの下のすべてのベンチマークテストファイルを実行する必要がある場合は、ポイントを-benchのパラメータとして使用するだけです.
go test -v -cover -bench .
関数の応答時間をテストするためには,正確な測定値が得られるまで,被テスト関数をb.N回実行する必要がある.
package main
import "encoding/json"
type Student struct {
Name string
Age int
Sex string
}
func jsonMarshal(){
student:=&Student{Name:"xiao hong",Age:10,Sex:" "}
json.Marshal(student)
}
package main
import "testing"
func BenchmarkJsonMarshal(b *testing.B){
for i:=0;i
goos: windows
goarch: amd64
pkg: studygo
BenchmarkJsonMarshal-4 3000000 481 ns/op
PASS
上記のコマンドは、ベンチマークテストと機能テストを実行します.必要に応じて、ユーザーはフラグ-runを実行することによって機能テストを無視することができます.-runフラグは、実行する必要がある機能テストの例を指定するために使用されます.もし私たちが存在しない機能テストの名前を-runフラグのパラメータとして使用すると、すべての機能テストは無視されます.たとえば、次のようになります.
go test -run x -bench .