تشغيل اختبارات الوحدة باستخدام العلامات المخصصة
في Visual Studio Code (VS Code)، يمكنك مواجهة تحديات تشغيل اختبارات الوحدة وتصحيح الأخطاء عندما تحتاج إلى توفير أعلام محددة. دعنا نتعمق في المشكلة ونقدم حلاً شاملاً.نظرة عامة على المشكلة
عند تشغيل اختبارات الوحدة من VS Code، قد يحتاج المستخدمون إلى تحديد علامات مخصصة، مثل - ldflags في المثال المقدم. ومع ذلك، فقد واجهوا صعوبات عند دمج هذه العلامات في مشغل اختبار VS Code.
تكوينات العمل
من خلال التجربة، تم اكتشاف أن هناك حاجة إلى تكوينين منفصلين لـ تحقيق كل من وظيفة اختبار التشغيل واختبار التصحيح:"go.testFlags": [ "-ldflags"، "-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn" ]
"go.testFlags": [
"-ldflags",
"-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn"
]
"go.testFlags": [ "-ldflags"، "'-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn'" ]
"go.testFlags": [
"-ldflags",
"-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn"
]
يكمن سبب التكوينات المختلفة في كيفية إنشاء VS Code لأمر الاختبار. عند تصحيح الأخطاء، يضيف VS Code معلمات إضافية إلى الأمر، مما يؤثر على طريقة تفسير العلامات. على هذا النحو، تعد علامات الاقتباس المفردة في تكوين تصحيح الأخطاء ضرورية لضمان تمرير العلامات بشكل صحيح.
الحل المحتمل
هناك طريقة بديلة مقترحة لتصحيح أخطاء الاختبارات المعقدة هي لتجميع الاختبار الثنائي وبدء جلسة تصحيح أخطاء dlv. وهذا يسمح بتحكم أفضل في تنفيذ الاختبار وتجربة تصحيح الأخطاء.
استخدام dlv لتصحيح الأخطاء
توضح الخطوات التالية كيفية استخدام dlv لاختبارات وحدة التصحيح:
قم بتجميع ثنائي الاختبار مع العلامات الضرورية، مثل:go test -c -ldflags "-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn" -gcflags="all=-N -l"بدء جلسة dlv بدون رأس:
go test -c -ldflags "-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn" -gcflags="all=-N -l"في VS Code، افتح تكوين التشغيل الملف (التصحيح: افتح Launch.json). أنشئ تكوينًا مشابهًا لما يلي:
{ "الإصدار": "0.2.0"، "التكوينات": [ { "الاسم": "اختبار التصحيح"، "اكتب": "اذهب"، "طلب": "إرفاق"، "الوضع": "عن بعد"، "المنفذ": 2345، "المضيف": "127.0.0.1"، "showLog": صحيح، "تتبع": "سجل" } ]
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug Test",
"type": "go",
"request": "attach",
"mode": "remote",
"port": 2345,
"host": "127.0.0.1",
"showLog":true,
"trace":"log"
}
]
}
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3