سؤال

لقد بدأت للتو في إجراء التطوير المدفوع ، وأتساءل عن الاختلافات الرئيسية بين Rhinomock و Typemock و Nunit المدمج في السخرية؟

أي معلومات ستكون موضع تقدير كبير!

هل كانت مفيدة؟

المحلول

Typemock هو منتج تجاري (بمعنى أنه سيتعين عليك دفع ثمنه) ولكنه سيسمح لك بالسخرية من الكائنات الخرسانية - على عكس Rhinomocks/Nunit/MOQ والتي يمكن أن تسخر فقط من واجهة/فئة مجردة. كيف يحقق هذا هو السحر الأسود الحدودي ، لكنه يقوم ببعض الأشياء الذكية للغاية مع CLR.

يمكن أن يكون هذا مفيدًا بشكل خاص عند استخدام المكتبات في مشروعك لا تستخدم العديد من الواجهات. لذلك يمكنك ، على سبيل المثال ، استخدام Typemock للتسخين مع datacontext linqtoSQL ، أو كائنات SharePoint. ومع ذلك ، إذا كنت تستخدم Typemock هذا لا عذر للتصميم السيئ في طلبك.

بقدر ما أدرك ، بصرف النظر عن الاختلافات البسيطة في بناء الجملة ، ابتعدت معظم أطر العمل الساخرة عن نموذج السجل/التشغيل القديم. عادةً ما تقوم بإعداد السخرية عن طريق كتابة التوقعات باستخدام واجهة بطلاقة.

شخصيا ، لقد استخدمت فقط MOQ و I <3 IT.

نصائح أخرى

فيديو يسمى TDD - فهم الأشياء الوهمية بقلم Roy Osherove مفيد للغاية في تعلم الاختلافات في مكتبات السخرية المختلفة. إنه لا يتفقد بتفاصيل كبيرة من كل جانب ، ولكن بما يكفي لكي تفهمه. آمل أن يساعد هذا. روي هو أيضًا المهندس المعماري الرئيسي لـ Typemock وهو شخصية مؤثرة للغاية في حلبة اختبار الوحدة. لم أستطع أن أوصي بهذا الفيديو بما يكفي لشخص يريد أن يتعلم كيفية استخدام السخرية والتعرف أيضًا على المكتبة المتاحة.

الفرق الرئيسي بين Typemock و Open Source's هو أن Typemock يستخدم واجهة برمجة تطبيقات Profiler التي توفرها Microsoft بدلاً من أ وكيل ديناميكي. هذا يسمح لـ Typemock بالسخرية من الفصول الخرسانية والأساليب الثابتة. في حال لم تكن متأكدًا من ماهية Profiler ، فإن واجهة برمجة التطبيقات نفسها التي تستخدمها أدوات مثل Jetbrain's Dottrace و Redgate's Atts .NET Profilers. يستخدم Typemock فقط واجهة برمجة التطبيقات بطريقة مختلفة لتزوير (وهمية) ما تخبره به.

Richardod ، شكرًا على التذكير ، كتابه "فن اختبار الوحدة"يذهب إلى مزيد من التفاصيل حيث لا يوجد الفيديو. أنا أملك الكتاب وهو مفيد للغاية.

  • Rhino.mocks هو مصدر مفتوح ، تم تطويره بشكل مستمر ويحسن إطار عمل من قبل أحد المطورين الأكثر غزارة في الصناعة. لقد كان موجودًا لفترة من الوقت ، وبالتالي يدعم عدد قليل من النماذج المختلفة للسخرية. قد يكون من الصعب بعض الشيء أن نتعلم ، وبالتالي قد تجد برامج تعليمية للطريقة "القديمة" لفعل الأشياء. هذه نصيحة، setupResultfor () و توقع. كول () هي الطرق القديمة لفعل الأشياء. الطريقة الجديدة mockobject.assertwascalled ().

لم يكن لدي أي تجربة شخصية مع هؤلاء الآخرين ولكن ...

  • MOQ هو مصدر مفتوح ، تم تطويره بشكل مستمر وتحسين إطار عمل من قبل أحد المطورين الأقل غزارة في هذا المجال (مقارنةً بـ Ayende). إنه أحدث وبالتالي يفتقر إلى بعض الميزات التي لدى Rhino.mocks. هذه ليست مشكلة عادةً لأن هذه الميزات تميل إلى أن تكون مستاءة إلى حد ما في وحيد القرن. لقد سمعت أنه بسبب هذا ، من الأسهل قليلاً التعلم (ليس من الصعب تعلم أطراف السخرية بالمناسبة).
  • Nunit Mocks غريبة للغاية بقدر ما يذهب السخرية. إنه لا يدعم بناء جملة الترتيب-Actert-Assert الذي يعتمد بدلاً من ذلك على التوقع (السجل/إعادة التشغيل). يعتمد أيضًا على الأوتار لتحديد الأسماء وأسماء العقارات بدلاً من Lambdas. هذا يجعلها مقاومة بشكل كبير لإعادة التهيئة. هذه مشكلة خطيرة. أنا لن أنصح به.
  • يعد Typemock arselater إطارًا متشابهًا من أجل الدفع من شركة (مملوكة؟) روي أوشيروف - رجل يعرف اختباره ولكن لديه أيضًا بعض الآراء المثيرة للجدل المعتدل حول كيفية تطبيقه. إنه أمر مكثف حقًا بقدر ما يمكن أن يفعله - الوصول إلى المستوى المنخفض وتعديل كيفية عمل كائنات CLR. الفلسفة وراء Typemock ليست حقا 100 ٪ TDD ولكن. جزء من فوائد TDD هو أنه من خلال تبني قيود الأطر السخرية ، ستقوم بتصميم رمز أفضل. Typemock ينفجر تلك القيود إلى القطع. بقدر ما أعرف ، يتم استخدامه في الغالب من قبل الأشخاص الذين يحاولون الحصول على رمز ليس لديهم سيطرة على الاختبار.

أستخدم Typemock طوال الوقت ووجدت أنه أداة قوية للغاية يمكنها تحسين تغطية اختبارات وحدتي. هذا لأنني أعمل مع SharePoint ولا يمكن أن يسمح لي Typemock فقط بالسخرية من فصول SharePoint - نظرًا لأنها فصول ملموسة وليس واجهات.

لا يمكن تسخين فصول SharePoint مع Rhinomock و MOQ و NUNIT وما إلى ذلك لأن (على ما أظن) يحتاجون إلى واجهات لسخر الكائنات ، بدلاً من القدرة على السخرية من الفئات الخرسانية الفعلية.

إذا كان الكود الخاص بك يستخدم الكثير من الواجهات ، ولم تكن بحاجة إلى فصول خرسانية سخرية ، فإن Typemock تكون باهظة الثمن بعض الشيء ، ولكن بالنسبة للقوة التي تحصل عليها ، فإن الأمر يستحق ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top