Avatar ·

كيفية إعداد بيئة الاختبار (setup) بشكل صحيح في Go باستخدام حزمة testing؟

```html السلام عليكم! بدأت في تعلم Go وأحاول كتابة اختبارات الوحدة (unit tests) لمشروعي. لدي دالة تتعامل مع قاعدة البيانات وتنفذ عدة استعلامات. للاختبار، أحتاج قبل كل اختبار إلى تجهيز البيانات: إنشاء الجداول، إدراج سجلات اختبارية، وبعد الاختبار — تنظيف كل شيء. أعرف عن الدالتين TestMain و t.Run، لكنني لا أفهم كيف يمكنني استخدامهما بشكل صحيح للإعداد/التنظيف (setup/teardown). في لغات أخرى (Java, Python)، تعودت على التعليقات التوضيحية @Before/@After أو fixtures الخاصة بـ pytest. أما في Go فلا يوجد شيء كهذا، ويبدو لي أنني أكرر نفس الكود في كل اختبار. إليكم مثالاً على منهجي الحالي (الذي لا يعجبني): ```go func TestGetUser(t *testing.T) { db := setupDB() // إنشاء قاعدة البيانات، الجداول، إدراج البيانات defer teardownDB(db) // حذف الجداول user, err := GetUser(db, 1) if err != nil { t.Fatal(err) } if user.Name != "Alice" { t.Errorf("expected Alice, got %s", user.Name) } } func TestCreate