Go では、コード自体の内部からテスト関数を呼び出すべきではありません。代わりに、単体テストは go test
Go は、ブラック ボックスとホワイト ボックスの 2 種類の単体テストをサポートしています。 .
ブラックボックス テストは、パッケージの外部からエクスポートされた関数をテストし、外部パッケージがどのように対話するかをシミュレートします。
ホワイトボックス テストパッケージ自体の内部からエクスポートされていない関数をテストします。
エクスポートされた関数 Sum とエクスポートされていないユーティリティ関数 add を含む example というパッケージを考えます。
// example.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
}
ブラックボックス テスト (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
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 test コマンドを使用して実行する必要があり、コード内から直接呼び出さないでください。ブラック ボックス テストとホワイト ボックス テストでは、テスト目的でパッケージの実装へのさまざまなレベルのアクセスが提供されます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3