تكرار السؤال: …
الإجابة المختصرة
الـ [Fact] اختبار مفرد ينفذ مرة واحدة بشروط ثابتة، بينما [Theory] اختبار معياري يقبل معاملات وينفذ عدة مرات لكل صف بيانات في [InlineData] أو [MemberData].
الشرح
إذا أردت اختبار دالة التحقق من البريد الإلكتروني مع 10 مدخلات مختلفة، فإن كتابة 10 دوال [Fact] تكرار غير مبرر. باستخدام [Theory] و [InlineData('[email protected]', true)]، يمكنك تغذية نفس دالة الاختبار بقيم صحيحة وخاطئة متعددة وتجربة الحالات الحدية بسهولة فائقة في دالة واحدة موجزة.
مثال بالكود
[Theory]
[InlineData(2, true)]
[InlineData(3, false)]
[InlineData(4, true)]
public void IsEven_ReturnsCorrectResult(int number, bool expected) {
Assert.Equal(expected, MathUtils.IsEven(number));
}أخطاء شائعة
- تمرير كائنات معقدة غير ثابتة داخل [InlineData]؛ تقبل InlineData ثوابت ثابتة فقط، وللكائنات المعقدة يجب استخدام [MemberData] أو [ClassData].