هل توجد اصطلاحات لأسماء الوظائف عند استخدام Perl Test::More؟

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

  •  09-06-2019
  •  | 
  •  

سؤال

هل توجد اصطلاحات لأسماء الوظائف عند استخدام الوحدات النمطية Perl Test::More أو Test::Simple؟

أنا أسأل على وجه التحديد عن أسماء الوظائف المستخدمة لإعداد بيئة اختبار قبل الاختبار ولتدمير البيئة بعد الانتهاء بنجاح من الاختبار (الاختبارات).

هتافات،

روب

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

المحلول

لا أعتقد أن هناك مثل هذه الاتفاقيات هناك.

ربما تكون الطريقة الوحيدة للقيام بذلك هي استخدام كتل BEGIN/END، إذا كان سيتم استخدام الموارد على الملف بأكمله.

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

شيء مثل ...

BEGIN {
   # If you want to set some global db setting/file setting/INC changes etc
}

# Tests functionality 1...
{
     # have fun .... 
}

# Tests functionality 2...
{
     # have more fun .... 
}

END {
   # Clean up the BEGIN changes
}

على ملاحظة أخرى، قد ترغب في قراءة هذا للاختبار في بيرل ... http://perlandmac.blogspot.com/2007/08/using-Perl-testsimple-and-testmore.html

نصائح أخرى

إذا كنت تبحث عن المزيد من اختبارات نمط XUnit، فراجعها الاختبار::الفصل.فهو يوفر Test(setup) و Test(teardown) سمات للطرق التي تعمل على إعداد بيئتك وتدميرها.كما أنه يوفر لك طريقة أفضل بكثير للتعامل مع الخطط (يمكنك توفير واحدة لكل طريقة اختبار على حدة، وبالتالي يكون العد أقل تعقيدًا) ويتيح لك وراثة الاختبارات عبر التسلسلات الهرمية لفئات الاختبار.

لا أعتقد أن هناك مجموعة رسمية من الاتفاقيات، لذا أوصي بالاطلاع على الأمثلة في http://perldoc.perl.org/Test/More.html ونرى كيف يكتبون اختباراتهم.

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

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

شكرا إسبو.

لقد ألقيت نظرة على perldocs ذات الصلة ولكن لا يوجد اتفاق حقيقي فيما يتعلق بجوانب الإعداد والتفكيك.

ليس مثل سلسلة اختبارات XUnit.

شكرًا على إجابة Jagmal ولكني لست متأكدًا من استخدام كتلتي BEGIN وEND للإعداد والتفكيك لأنك لا توضح ما تفعله بالأسماء.هناك أيضًا مشكلة واضحة تتمثل في إجراء عملية إعداد واحدة فقط وتشغيل عملية تفكيك واحدة لكل اختبار، أي.لكل ملف .t.

لقد ألقيت نظرة سريعة على Test::Most ويبدو مثيرًا للاهتمام حقًا، خاصة وظيفة الشرح.شكرا مات.

أمم.مجرد التفكير أكثر في استخدام كتلتي BEGIN و END، أعتقد أنه إذا قمت بتقليل دقة الاختبارات بحيث يكون هناك إعداد واحد فقط وتفكيك واحد مطلوب، فسيكون هذا حلاً جيدًا.

هتافات،

روب

الاتفاقية الأولى التي أقترحها هي التخلص من Test::More لـ Test::Most

نصوص اختبار Perl ليست خاصة أو سحرية بأي شكل من الأشكال.على هذا النحو، يمكن أن تحتوي على نفس الأشياء التي يحتوي عليها أي برنامج Perl آخر.

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

يمكنك الحصول على أي قدر من كود التهيئة قبل أي اختبارات، وأي قدر من كود التنظيف بعد الاختبارات، وأي قدر من أي كود آخر مختلط مع الاختبارات.

كل هذا يفترض أنك تتحدث عن نصوص اختبار t/*.t بنمط CPAN.أعتقد أنك كذلك، لكن يمكنني أن أقرأ سؤالك باعتباره سؤالًا يتعلق بتوسيع أدوات الاختبار، إذا أغمضت عيناي بشكل صحيح.

إذا كنت منفتحًا للدخول في اختبار القبول أيضًا، مثل Ruby's Cucumber - فألق نظرة على هذا المثال الصغير http://github.com/kesor/p5-cucumber الذي يستخدم Test::More وأسلوب خيار لاختبار القبول.

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