非テスト ファイルからのテスト関数の呼び出し
Go では、テストは特定の規則と方法論に依存します。これらの規則の 1 つは、テストを独自のテスト ファイルに分割し、「_test.go」サフィックスで終わる必要があるというものです。
テスト関数はテスト以外のファイルから呼び出すことができますか?
短い答え: いいえ。
ご質問とは異なり、テスト関数は非テスト Go ファイルから直接呼び出すことはできません。この分離により、テストがテスト対象のコードから区別され独立していることが保証されます。
Go のテスト パターン
Go は主に 2 種類の単体テストを採用します。
例
エクスポートされた「Sum」を含む次の「例」パッケージを考えてみましょう。関数とエクスポートされていない "add" 関数:
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 }
ブラックボックス テスト (example_test.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() } } }
ホワイトボックス テスト(example_internal_test.go):
package example_test 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() } } }
結論として、非テスト ファイルからテスト関数を呼び出すことは Go テストの原則に違反します。単体テストの目的には、確立されたワークフローと規則に従って、個別のテスト パッケージを使用する必要があります。
以上がテスト以外のファイルから Go テスト関数を呼び出すことはできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。