ما هي بعض أطر اختبار وحدة JavaScript والسخرية التي استخدمتها؟[مغلق]

StackOverflow https://stackoverflow.com/questions/209418

سؤال

إطار عمل جافا سكريبت الرئيسي الخاص بي هو مسج لذلك أود أن يكون اختبار الوحدة وأطر العمل الساخرة متوافقة مع ذلك.أفضل ألا أضطر إلى تقديم إطار عمل JavaScript آخر.

أنا أستخدم حاليا كيونيت لاختبار الوحدة و جاك للسخرية، لكنني جديد جدًا على اختبار الوحدة الكاملة لجافا سكريبت.

هل لدى أي شخص آخر أداة أفضل لاقتراحها؟ما عملت بالنسبة لك؟

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

المحلول

كيونيت
jQUnit
كتابة اختبارات JS باستخدام QUnit وjQUnit

QUnit هو إطار عمل اختبار الوحدة لإطار عمل jQuery JavaScript.يستخدم إطار الاختبار نفسه مكتبة jQuery، ولكن يمكن كتابة الاختبارات لأي JavaScript ولا تتطلب تعليمات برمجية لاستخدام jQuery.JQUnit عبارة عن نسخة معدلة من QUnit تضيف وظائف الإعداد والتفكيك والتأكيد التي تعتبر أكثر شيوعًا في إطار عمل xUnit، وتلخص كل شيء في متغير عام واحد.

تعد الواجهة المرئية لصفحة اختبار الاختبار رائعة، مما يسمح لك بالتعمق ورؤية كل تأكيد في كل طريقة اختبار.تعد كتابة الاختبارات سهلة إلى حد ما، ويمكنك تشغيل كود الاختبار مباشرة على صفحة testRunner [8].وهذا يسمح بإجراء اختبار DOM سهل ومرئي.

الوحدة:MIT أو GPL (اختر) jQUnit:رخصة معهد ماساتشوستس للتكنولوجيا

الايجابيات
- دعم غير متزامن
- جيد لاختبار DOM
- يتم تشغيل الاختبارات دائمًا بالتسلسل حسب ترتيب إضافتها إلى المجموعة
- تصحيح الأخطاء في صفحة الاختبار باستخدام firebug
- بناء الجملة مشابه لـ JUnit في حالة استخدام JQUnit، ولكن من السهل تعلمه في حالة استخدام QUnit
سلبيات
- سيكون من الصعب تنفيذ الأتمتة

نصائح أخرى

أعتقد أن جاك هو أفضل إطار عمل ساخر لجافا سكريبت حتى وقت كتابة هذه السطور.السبب الرئيسي هو أن ما هو مناسب لـ JavaScript ليس من المحتمل أن يكون مناسبًا للغة مكتوبة بقوة مثل Java.

العديد من أطر عمل JavaScript الساخرة مستوحاة من أطر عمل Java الوهمية (مثل JsMockito الممتاز، على سبيل المثال).لكن المشكلة مع هؤلاء أنهم يتطلب حقن التبعية، لأن هذه هي الطريقة الوحيدة المعقولة لاستخدام السخرية في Java.ولكن في جافا سكريبت، هناك العديد من الطرق لاستخدام السخرية، وأنت لست كذلك قسري في استخدام حقن التبعية في كل مكان.

على سبيل المثال، مع JsMockito، عليك أن تقوم بعمل نماذج وهمية ثم تمرير تلك يسخر إلى برنامجك قيد الاختبار (SUT).يتعين على SUT استدعاء النماذج مباشرة.ولذلك، فأنت مجبر على ترميز SUT كمنشئ أو دالة تأخذ جميع تبعياتها كمعلمات.(في بعض الأحيان، تكون هذه طريقة جيدة لتنفيذها، ولكن ليس في كل الحالات.الذيل يهز الكلب إذا كان تصميم إطار العمل الخاص بك يفرض عليك أسلوب التنفيذ).

في JavaScript، من السهل جدًا "اختطاف" أي وظيفة.لذلك، هناك العديد من الطرق لبناء شيء ما بحيث يمكنك الاستهزاء بأجزاء منه دون إدخال تبعياته فيه بشكل صريح.على سبيل المثال، يتيح لك جاك السخرية أي الوظيفة، سواء كانت عامة أو على كائن محلي.ومن هناك يمكنك التجسس عليه أو إيقافه أو التعبير عن التوقعات بشأنه.النقطة الأساسية هي هذه: بمجرد الاستهزاء بوظيفة ما، سيتم بدلاً من ذلك توجيه أي استدعاءات لتلك الوظيفة الأصلية إلى المحاكاة الخاصة بك.بمعنى آخر، سيستمر استخدام نماذجك المقلدة على الرغم من استدعاء الوظيفة الأصلية التي لم يتم الاستهزاء بها.ونتيجة لذلك، لن تضطر إلى إدخال التبعيات، على الرغم من أنه يمكنك بالتأكيد القيام بذلك في تلك الحالات التي تتطلب ذلك.

JavaScript هي لغة مختلفة عن Java (وC#، وما إلى ذلك) فهي تسمح بمصطلحات تنفيذ مختلفة. لا يزال حقن التبعية أحد الأدوات القيمة في صندوق الأدوات في JavaScript، لكنه لم يعد اللعبة الوحيدة في المدينة بعد الآن. يحتاج إطارك الساخر إلى معرفة هذه الحقيقة واحترامها.جاك واثنين من الآخرين يفعلون ذلك، ولكن من بين أولئك الذين يفعلون ذلك، يبدو أن جاك هو الأكثر نضجًا وثراءً بالميزات.

وأنا لست متأكدا من السبب وقد ذكر لا أحد JsTestDriver ! عليها أن تكون واحدة من الأدوات JS اختبار الوحيدة التي تعمل في الواقع مثل كنت تتوقع لهم إذا كنت قد استخدمت أدوات اختبار وحدة في لغات أخرى.

ويمكن أن يتم اختبارات الجري دون لمس متصفح، يمكنك دمجه مع لIDE، يمكنك دمجه مع أنظمة التكامل المستمر ... أوه، وانها سريعة، ويمكن إجراء اختبارات في متصفحات متعددة في نفس الوقت.

ويمكنك أيضا استخدام الأطر اختبار أخرى مثل YUITest معها، والارتقاء به إلى الأفضل.

اختبار يوي
TDD مع اختبار YUI

اختبار YUI هو إطار اختبار لمكتبة واجهة مستخدم Yahoo.يتم استخدامه بواسطة Yahoo لاختبار مكتبتها الخاصة، وله بناء جملة مشابه لـ jUnit.

مثل jsUnit، يأتي اختبار YUI مزودًا بوحدة تحكم التسجيل الخاصة به والتي يمكنها إخراج المعلومات والتحذيرات والأخطاء بالإضافة إلى نتائج كل اختبار.

يوفر YUI أيضًا القدرة على إرسال التقارير على النتائج بتنسيق JSON أو XML.

اختبار YUI مرخص من BSD.

الايجابيات
- توثيق جيد حقا
- مجتمع نشط
- الإصدارات العادية
- بناء الجملة مشابه لـ jUnit (مجموعات الاختبار والتأكيدات والإعداد/التفكيك)
- دعم غير متزامن
- جيد لاختبار DOM
- يتم تشغيل الاختبارات دائمًا بالتسلسل حسب ترتيب إضافتها إلى المجموعة

سلبيات
- الأتمتة ليست سهلة التنفيذ، ولكنها أقل صعوبة من الأطر الأخرى

وكما تحقق http://sinonjs.org/

<اقتباس فقرة>   

واختبار جواسيس بذرة اختبار يسخر توقيت وهمية وهمية وهمية XHR الخادم وضع الحماية التأكيدات

وويعمل جنبا إلى جنب مع qUnit والذي كان زائد حتى الآن.

وهذا هو استعراض جيدة من السخرية الأطر المتاحة للجافا سكريبت:

http://testdrivenwebsites.com/2010/05/ 06 / جافا النصي وهمية أطر مقارنة

لقد تم استخدام jsspec jsspec . لطيفة للغاية إذا كنت ترغب rspec وBDD. رأى مجرد المادة جوستين Gehtland على استخدامه "مقطوعة الرأس "كذلك.

لساخرا في جافا سكريبت نلقي نظرة على qMock أو إطار زميل وكتبت لتكمل استخدامنا للQUnit. على الرغم من أن هذه الأخيرة تعتبر كبيرة بالنسبة لاختبارات وحدة، فإنه لا يسمح للفعالة جدا المتزامن / الأعمال اختبار المنطق. نحن havn't 'المعلمة' أي إصدار بأنها مستقرة، ولكن هناك بعض المستندات لائقة هناك، وإذا كنت من الخروج للإس سترى qmock نفسها لديها وحدة الاختبارات وراء ذلك والتي هي إلى حد ما تحتاج إلى شرح.

وأوه، ولأتمتة الاختبار كجزء من بناء استخدمنا النصي السيلينيوم بسيطة للتنقل من خلال testsuite (صفحة اختبار واحد لكل ملف JS) لدينا، و "استمع" لنجاح أو رسوب الطبقة CSS (التي أضافها QUnit) . هذا يعمل مقطوعة الرأس فضلا عن IE / FF2 AFAIK

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

http://thefrontside.net/crosscheck

هل يمكن أن تحاول HtmlUnit حيث كان <لأ href = "HTTP: //mguillem.wordpress. كوم / 2007/08/17 / htmlunit-113-صدر / "يختلط =" نوفولو noreferrer "> مسج متوافق الإفراج منذ أكثر من عام.

وميزة HtmlUnit هو أنه لا يقود المتصفح لذلك هو سريع.

والجانب السلبي هو أنه لا يقود المتصفح لذلك هناك بعض الأشياء JS التي لن تعمل. لكن عوض أن يتمكنوا من تشغيل الاختبارات مسج ذلك الدعم JS قد تكون جيدة بما يكفي لما تحتاجه.

JsUnit يتم تشغيله إما من المتصفح، من خلال مكون Eclipse الإضافي الخاص به، أو تلقائيًا من خلال مهمة ANT.يمكنك إنشاء صفحة HTML تحتوي على مجموعة من وظائف الاختبار، والتي يجب تسميتها بالبادئة "test"، بما في ذلك ملف JS الذي تختبره.عندما يفشل أي تأكيد داخل إحدى الوظائف، تفشل الوظيفة بأكملها وتتوقف عن التنفيذ.لا يوجد ترتيب مضمون لإجراء هذه الاختبارات.ثستطيع ان تخلق setup() و teardown() المهام.

رخصة:جي بي إل، جي بي إل، إم بي إل

الايجابيات

  • الأتمتة سهلة التنفيذ نسبيًا
  • الكثير من الوظائف
  • بناء الجملة مشابه لـ JUnit

سلبيات

  • ليس رائعًا لاختبار DOM نظرًا لأنه يجري اختبارات داخل iFrame.
  • لا يوجد ضمان بأنه سيتم تشغيل الاختبارات بالترتيب الذي كتبت به.
  • لا يمكن استخدام Firebug على صفحة الاختبار.تحتاج إلى فتح علامة تبويب أخرى برمز الاختبار الفعلي.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top