1. مبتدئ

    ما الفلسفة المعمارية لإطار xUnit وكيف يعزل الاختبارات عبر إنشاء نسخة فئة جديدة لكل اختبار؟

    ينشئ xUnit نسخة جديدة تماماً من فئة الاختبار لكل دالة [Fact] لضمان استقلال الحالات ومنع التداخل، ويعتمد على الباني و IDisposable بدلاً من Setup و Teardown.

    اقرأ الشرح الكامل
  2. متوسط

    كيف تستخدم WebApplicationFactory<Program> لإجراء اختبارات تكاملية حقيقية لخوادم ASP.NET Core؟

    تنشئ خادماً تجريبياً في الذاكرة (TestServer) يشغل كامل خط أنابيب التطبيق الحقيقي ويوفر عميل HttpClient لإرسال الطلبات وفحص الاستجابات بدقة.

    اقرأ الشرح الكامل
  3. مبتدئ

    قارن بين مكتبتي Moq و NSubstitute في إنشاء الكائنات الوهمية (Mocks) لاختبارات C#.

    NSubstitute توفر صياغة طبيعية وأنيقة جداً خالية من الـ Lambda Expressions المعقدة (Substitute.For<T>()) وأصبحت الخيار الأكثر أماناً وشعبية في المجتمع الحديث.

    اقرأ الشرح الكامل
  4. مبتدئ

    ما هي ميزة مكتبات التوكيد التعبيري مثل FluentAssertions أو AwesomeAssertions في اختبارات .NET؟

    تحول التوكيدات إلى لغة طبيعية مقروءة بأسلوب السلسلة (Fluent Syntax) وتقدم رسائل أخطاء تفصيلية وواضحة جداً عند فشل الاختبار.

    اقرأ الشرح الكامل
  5. متقدم

    كيف تستخدم Testcontainers.MsSql أو Testcontainers.PostgreSql لاختبار EF Core بقواعد بيانات حقيقية؟

    تشغل حاوية Docker حقيقية لقاعدة البيانات أثناء تشغيل الاختبارات، وتطبق الـ migrations عليها، وتدمرها تلقائياً بعد الانتهاء، مما يقضي على مشاكل الفروق بين InMemory والواقع.

    اقرأ الشرح الكامل
  6. متوسط

    ما هي فئة TimeProvider المضافة في .NET 8 وكيف حلت معضلة اختبار الأكواد المعتمدة على الوقت والمؤقتات؟

    تجريد رسمي للوقت والمؤقتات يُحقن في الخدمات كـ TimeProvider؛ ويتيح في الاختبارات تجميد وتمرير الوقت يدوياً عبر FakeTimeProvider دون انتظار حقيقي.

    اقرأ الشرح الكامل
  7. متقدم

    كيف تطبق اختبارات المعمارية (Architecture Tests) باستخدام مكتبات مثل NetArchTest في .NET؟

    تكتب اختبارات وحدة تفحص التجميعات وتفرض القواعد المعمارية؛ كأن تمنع طبقة الـ Domain من الإشارة لطبقة الـ Infrastructure أو تفرض تسميات موحدة للمتحكمات.

    اقرأ الشرح الكامل
  8. متقدم

    ما هو فحص الطفرات (Mutation Testing) بأداة Stryker.NET وكيف يقيس الجودة الحقيقية للتوكيدات؟

    يقوم بتعديل شروط الكود عمداً (مثل عكس الشروط أو حذف السطور)؛ فإذا نجحت الاختبارات رغم التخريب (Survived)، فهذا يكشف ضعف التوكيدات وحالات حدية غير مغطاة.

    اقرأ الشرح الكامل
  9. مبتدئ

    ما الفرق بين سمة [Fact] وسمة [Theory] في إطار xUnit وكيف تمرر مجموعات بيانات بـ [InlineData]؟

    الـ [Fact] اختبار مفرد ينفذ مرة واحدة بشروط ثابتة، بينما [Theory] اختبار معياري يقبل معاملات وينفذ عدة مرات لكل صف بيانات في [InlineData] أو [MemberData].

    اقرأ الشرح الكامل
  10. متوسط

    كيف تختبر عملاء HttpClient بأمان دون إرسال طلبات شبكة حقيقية باستخدام MockHttpMessageHandler؟

    باستبدال معالج الرسائل الأساسي (HttpMessageHandler) بمعالج وهمي يعترض استدعاء SendAsync ويرجع استجابة HttpResponseMessage محددة مسبقاً.

    اقرأ الشرح الكامل