"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنك اختبار الوظائف غير المصدرة في Go؟

كيف يمكنك اختبار الوظائف غير المصدرة في Go؟

تم النشر بتاريخ 2024-11-06
تصفح:364

How Can You Test Unexported Functions in Go?

استدعاء وظائف الاختبار من ملفات غير تجريبية

في 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