Go では、通常、単体テストは go test を使用して実行されます。これは、 でマークされたテスト関数を識別して実行します。 testing.T パラメータ。ただし、次のような疑問が生じます: テスト以外のファイルからテスト関数を呼び出して、テストの実行を開始できますか?
残念ながら、答えはノーです。 Go のテスト フレームワークは、テスト コードと非テスト コードを強制的に分離するように設計されています。テスト関数はテスト ファイル内からのみ呼び出す必要があり、テスト対象のユニットは適切なパッケージからインポートする必要があります。
Go は 2 つの主要なテスト パターンをサポートしています。
追加ユーティリティ関数とエクスポートされた Sum を含む example という名前のサンプル パッケージを考えてみましょう。内部の追加関数を利用する関数。
example.go: エクスポートされた関数とエクスポートされていない関数を含むパッケージ
<code class="go">package example func Sum(nums ...int) int { sum := 0 for _, num := range nums { sum = add(sum, num) } return sum } func add(a, b int) int { return a + b }</code>
<code class="go">package example_test import ( "testing" "example" ) func TestSum(t *testing.T) { tests := []struct { nums []int sum int }{ {nums: []int{1, 2, 3}, sum: 6}, {nums: []int{2, 3, 4}, sum: 9}, } for _, test := range tests { s := example.Sum(test.nums...) if s != test.sum { t.FailNow() } } }</code>
<code class="go">package example import "testing" func TestAdd(t *testing.T) { tests := []struct { a int b int sum int }{ {a: 1, b: 2, sum: 3}, {a: 3, b: 4, sum: 7}, } for _, test := range tests { s := add(test.a, test.b) if s != test.sum { t.FailNow() } } }</code>
結論として、テスト コードと非テスト コードは設計的に分離されているため、テスト ファイルの外部からテスト関数を呼び出すことはできません。囲碁で。単体テストは常に go test コマンドを使用して実行する必要があり、懸念事項を確実に分離し、意図しないコードの実行を防ぎます。
以上がGo でテスト ファイルの外部からテスト関数を呼び出すことはできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。