Golangテスト
6460 ワード
前言
どの言語にも独自のテストポーズがあり、golangの著者はtestingのバッグを提供してテストの旅を完成させ、簡単で使いやすく、一緒に歩いています.
10 s後、以下の知識点が近づいています.1.なぜテストが必要ですか?2.Golangのテストルール3.機能テスト4.圧力テスト5.テストコードのオーバーライド率テスト6.すべてのパラメータのメモをテスト
本文
1.なぜテストが必要なのか。
これはありふれた話題で、どこで見たデータを忘れたのか、完璧なテストシステムであることを示しています(ここでは主に自測を指します)、実は開発効率を向上させることができます.プロジェクトが十分に複雑な場合、できるだけ少ないバグを保証するには、2つの方法が最も有効です.1.コード監査2.テスト.だからGolangは公式にtestingパッケージを提供してみんなの需要を満たしました.
2.Golangのテストルール
testingパッケージを通じて、私たちは主に3つのテストを行うことができる姿勢です:1.機能テスト2.圧力テスト3.コードオーバーライド率をテストするテスト(あなたが書いたテスト例がどれだけのコードをオーバーライドしているか).以上の3点を紹介する前に、Golangの公式のいくつかの約束(テストルールとも言えます)は守らなければなりません.そうしないと、Golangはあなたが書いたテストコードを認めません.
キー(Key)
説明
必要なパッケージのインポート
import testing(golandなら無視できます.ideが自動的に追加してくれるからです)
コマンドの実行
go test file_test.go
テストファイル名
でなければなりませんtest.goエンディング
機能テストの力関数
Testの先頭&&後に続く関数名は小文字で始まることはできません.例えば、Testcbsはだめです.TestCbsはokです.
機能テストパラメータ
testing.T
圧力試験用例関数
Benchmarkで始まる必要があります&&その後の関数名は小文字で始まることはできません(例同上)
あつりょくしけんパラメータ
testing.B
テスト情報
.Logメソッドは、デフォルトでは表示されませんが、go test-vの場合のみ表示されます
テストコントロール
Error/Errorf/FailNow/Fatalなどによるテストが失敗したか、または失敗した場合の制御
圧力テストコマンド
go test -test.bench file_test.go
圧力試験の循環体
testを使用します.B.N
3.機能テスト
フォルダormdifffを作成しました.テストファイルdiff_があります.test.go
上コード:diff_test.go
コマンドラインを実行できます:go test-v diff_test.go
上の図では8行目の関数の前に緑色の三角矢印が表示されます.クリックすると、以下のいくつかのテストメニュー、カバー率テスト、cpu、メモリ性能モニタリング、block、mutext分析などのテスト機能が表示されます.runを通じて、以下の結果が表示されます.
4.圧力テスト
diff_test.go改造コードを圧力テスト
コマンドライン実行:go test-bench=.diff_test.go
5.コードオーバーライド率テスト
コマンド実行:go test-cover-bench=.diff_test.go
golandでクリックして実行します.次のようにします.
6.性能テスト
略
7.すべてのパラメータをテストする
The test binary also accepts flags that control execution of the test; theseflags are also accessible by ‘go test’.
-bench regexp
Run only those benchmarks matching a regular expression.
By default, no benchmarks are run.
To run all benchmarks, use '-bench .' or '-bench=.'.
The regular expression is split by unbracketed slash (/)
characters into a sequence of regular expressions, and each
part of a benchmark's identifier must match the corresponding
element in the sequence, if any. Possible parents of matches
are run with b.N=1 to identify sub-benchmarks. For example,
given -bench=X/Y, top-level benchmarks matching X are run
with b.N=1 to find any sub-benchmarks matching Y, which are
then run in full.
-benchtime t
Run enough iterations of each benchmark to take t, specified
as a time.Duration (for example, -benchtime 1h30s).
The default is 1 second (1s).
-count n
Run each test and benchmark n times (default 1).
If -cpu is set, run n times for each GOMAXPROCS value.
Examples are always run once.
-cover
Enable coverage analysis.
Note that because coverage works by annotating the source
code before compilation, compilation and test failures with
coverage enabled may report line numbers that don't correspond
to the original sources.
-covermode set,count,atomic
Set the mode for coverage analysis for the package[s]
being tested. The default is "set" unless -race is enabled,
in which case it is "atomic".
The values:
set: bool: does this statement run?
count: int: how many times does this statement run?
atomic: int: count, but correct in multithreaded tests;
significantly more expensive.
Sets -cover.
-coverpkg pattern1,pattern2,pattern3
Apply coverage analysis in each test to packages matching the patterns.
The default is for each test to analyze only the package being tested.
See 'go help packages' for a description of package patterns.
Sets -cover.
-cpu 1,2,4
Specify a list of GOMAXPROCS values for which the tests or
benchmarks should be executed. The default is the current value
of GOMAXPROCS.
-failfast
Do not start new tests after the first test failure.
-list regexp
List tests, benchmarks, or examples matching the regular expression.
No tests, benchmarks or examples will be run. This will only
list top-level tests. No subtest or subbenchmarks will be shown.
-parallel n
Allow parallel execution of test functions that call t.Parallel.
The value of this flag is the maximum number of tests to run
simultaneously; by default, it is set to the value of GOMAXPROCS.
Note that -parallel only applies within a single test binary.
The 'go test' command may run tests for different packages
in parallel as well, according to the setting of the -p flag
(see 'go help build').
-run regexp
Run only those tests and examples matching the regular expression.
For tests, the regular expression is split by unbracketed slash (/)
characters into a sequence of regular expressions, and each part
of a test's identifier must match the corresponding element in
the sequence, if any. Note that possible parents of matches are
run too, so that -run=X/Y matches and runs and reports the result
of all tests matching X, even those without sub-tests matching Y,
because it must run them to look for those sub-tests.
-short
Tell long-running tests to shorten their run time.
It is off by default but set during all.bash so that installing
the Go tree can run a sanity check but not spend time running
exhaustive tests.
-timeout d
If a test binary runs longer than duration d, panic.
If d is 0, the timeout is disabled.
The default is 10 minutes (10m).
-v
Verbose output: log all tests as they are run. Also print all
text from Log and Logf calls even if the test succeeds.
-vet list
Configure the invocation of "go vet" during "go test"
to use the comma-separated list of vet checks.
If list is empty, "go test" runs "go vet" with a curated list of
checks believed to be always worth addressing.
If list is "off", "go test" does not run "go vet" at all.
1.なぜテストが必要なのか。
これはありふれた話題で、どこで見たデータを忘れたのか、完璧なテストシステムであることを示しています(ここでは主に自測を指します)、実は開発効率を向上させることができます.プロジェクトが十分に複雑な場合、できるだけ少ないバグを保証するには、2つの方法が最も有効です.1.コード監査2.テスト.だからGolangは公式にtestingパッケージを提供してみんなの需要を満たしました.
2.Golangのテストルール
testingパッケージを通じて、私たちは主に3つのテストを行うことができる姿勢です:1.機能テスト2.圧力テスト3.コードオーバーライド率をテストするテスト(あなたが書いたテスト例がどれだけのコードをオーバーライドしているか).以上の3点を紹介する前に、Golangの公式のいくつかの約束(テストルールとも言えます)は守らなければなりません.そうしないと、Golangはあなたが書いたテストコードを認めません.
キー(Key)
説明
必要なパッケージのインポート
import testing(golandなら無視できます.ideが自動的に追加してくれるからです)
コマンドの実行
go test file_test.go
テストファイル名
でなければなりませんtest.goエンディング
機能テストの力関数
Testの先頭&&後に続く関数名は小文字で始まることはできません.例えば、Testcbsはだめです.TestCbsはokです.
機能テストパラメータ
testing.T
圧力試験用例関数
Benchmarkで始まる必要があります&&その後の関数名は小文字で始まることはできません(例同上)
あつりょくしけんパラメータ
testing.B
テスト情報
.Logメソッドは、デフォルトでは表示されませんが、go test-vの場合のみ表示されます
テストコントロール
Error/Errorf/FailNow/Fatalなどによるテストが失敗したか、または失敗した場合の制御
圧力テストコマンド
go test -test.bench file_test.go
圧力試験の循環体
testを使用します.B.N
3.機能テスト
フォルダormdifffを作成しました.テストファイルdiff_があります.test.go
上コード:diff_test.go
コマンドラインを実行できます:go test-v diff_test.go
上の図では8行目の関数の前に緑色の三角矢印が表示されます.クリックすると、以下のいくつかのテストメニュー、カバー率テスト、cpu、メモリ性能モニタリング、block、mutext分析などのテスト機能が表示されます.runを通じて、以下の結果が表示されます.
4.圧力テスト
diff_test.go改造コードを圧力テスト
コマンドライン実行:go test-bench=.diff_test.go
5.コードオーバーライド率テスト
コマンド実行:go test-cover-bench=.diff_test.go
golandでクリックして実行します.次のようにします.
6.性能テスト
略
7.すべてのパラメータをテストする
The test binary also accepts flags that control execution of the test; theseflags are also accessible by ‘go test’.
-bench regexp
Run only those benchmarks matching a regular expression.
By default, no benchmarks are run.
To run all benchmarks, use '-bench .' or '-bench=.'.
The regular expression is split by unbracketed slash (/)
characters into a sequence of regular expressions, and each
part of a benchmark's identifier must match the corresponding
element in the sequence, if any. Possible parents of matches
are run with b.N=1 to identify sub-benchmarks. For example,
given -bench=X/Y, top-level benchmarks matching X are run
with b.N=1 to find any sub-benchmarks matching Y, which are
then run in full.
-benchtime t
Run enough iterations of each benchmark to take t, specified
as a time.Duration (for example, -benchtime 1h30s).
The default is 1 second (1s).
-count n
Run each test and benchmark n times (default 1).
If -cpu is set, run n times for each GOMAXPROCS value.
Examples are always run once.
-cover
Enable coverage analysis.
Note that because coverage works by annotating the source
code before compilation, compilation and test failures with
coverage enabled may report line numbers that don't correspond
to the original sources.
-covermode set,count,atomic
Set the mode for coverage analysis for the package[s]
being tested. The default is "set" unless -race is enabled,
in which case it is "atomic".
The values:
set: bool: does this statement run?
count: int: how many times does this statement run?
atomic: int: count, but correct in multithreaded tests;
significantly more expensive.
Sets -cover.
-coverpkg pattern1,pattern2,pattern3
Apply coverage analysis in each test to packages matching the patterns.
The default is for each test to analyze only the package being tested.
See 'go help packages' for a description of package patterns.
Sets -cover.
-cpu 1,2,4
Specify a list of GOMAXPROCS values for which the tests or
benchmarks should be executed. The default is the current value
of GOMAXPROCS.
-failfast
Do not start new tests after the first test failure.
-list regexp
List tests, benchmarks, or examples matching the regular expression.
No tests, benchmarks or examples will be run. This will only
list top-level tests. No subtest or subbenchmarks will be shown.
-parallel n
Allow parallel execution of test functions that call t.Parallel.
The value of this flag is the maximum number of tests to run
simultaneously; by default, it is set to the value of GOMAXPROCS.
Note that -parallel only applies within a single test binary.
The 'go test' command may run tests for different packages
in parallel as well, according to the setting of the -p flag
(see 'go help build').
-run regexp
Run only those tests and examples matching the regular expression.
For tests, the regular expression is split by unbracketed slash (/)
characters into a sequence of regular expressions, and each part
of a test's identifier must match the corresponding element in
the sequence, if any. Note that possible parents of matches are
run too, so that -run=X/Y matches and runs and reports the result
of all tests matching X, even those without sub-tests matching Y,
because it must run them to look for those sub-tests.
-short
Tell long-running tests to shorten their run time.
It is off by default but set during all.bash so that installing
the Go tree can run a sanity check but not spend time running
exhaustive tests.
-timeout d
If a test binary runs longer than duration d, panic.
If d is 0, the timeout is disabled.
The default is 10 minutes (10m).
-v
Verbose output: log all tests as they are run. Also print all
text from Log and Logf calls even if the test succeeds.
-vet list
Configure the invocation of "go vet" during "go test"
to use the comma-separated list of vet checks.
If list is empty, "go test" runs "go vet" with a curated list of
checks believed to be always worth addressing.
If list is "off", "go test" does not run "go vet" at all.