في Go، لا ينبغي استدعاء وظائف الاختبار من داخل الكود نفسه. بدلاً من ذلك، من المفترض أن يتم تنفيذ اختبارات الوحدة باستخدام أمر go test
يدعم Go نوعين من اختبار الوحدة: الصندوق الأسود والصندوق الأبيض. .
اختبار الصندوق الأسود يختبر الوظائف المصدرة من خارج الحزمة، ويحاكي كيفية تفاعل الحزم الخارجية معها.
اختبار الصندوق الأبيض اختبارات الوظائف غير المصدرة من داخل الحزمة نفسها.
ضع في اعتبارك حزمة تسمى مثال مع دالة مُصدرة Sum وإضافة وظيفة مساعدة غير مُصدرة.
// 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