سؤال

إذا قمت بإنشاء مشروع ActionScript خالص في Flex Builder 3 وتريد إجراء اختبار الوحدة باستخدام flexunit، فما هو الخيار الأفضل؟

سيرفض منشئ Flex المدمج إنشاء ملف mxml الذي يحتوي على مكون TestRunnerBase لأنه مشروع ActionScript خالص (غير مسموح بـ Flex).من المستحيل إضافة ملف mxml إلى قائمة "تطبيقات ActionScript" في إعدادات المشروع.

الآن أستطيع أن أرى خيارين، كلاهما غير مرغوب فيه.

  1. أضف ملف mxml الذي يختبر الوحدة إلى المشروع وقم بإنشاء أداة إعداد خارجية لإنشاءه وتشغيله.هذا هو النهج الذي أتبعه الآن، وهو يعمل بشكل جيد، باستثناء أن التصحيح التفاعلي مستحيل.
  2. قم بإنشاء مشروع Flex جديد فقط لملف mxml الاختباري وأضف دليل src الخاص بالمشروع الرئيسي كدليل مصدر إضافي في خيارات الإنشاء.لا أحب هذا الأسلوب لأنه يتطلب الاحتفاظ بملف mxml في شجرة دليل منفصلة عن جميع الملفات المصدر الأخرى بالإضافة إلى قبح الاحتفاظ بمشروعين.
هل كانت مفيدة؟

المحلول

هناك دائما ASUnit.

نصائح أخرى

انتهى بي الأمر بوضع ملف mxml لاختبار الوحدة في المشروع الأصلي، وإنشاء مشروع Flex جديد، وحذف دليل src، واستبداله بمجلد مرتبط بـ Eclipse إلى دليل src لمشروع ActionScript.يبدو أن هذا الإعداد يعمل بشكل جيد.

لقد قمنا بشيء مماثل لكي تعمل FlexUnit مع CruiseControl.net (خادم التكامل المستمر).

في تنفيذنا، لدينا الكود أدناه يعمل في معالج FlexEvent.CREATION_COMPLETE لفئة التطبيق.

إن كيفية إخراج نتائج اختبارات الوحدة أمر متروك لك تمامًا.تم استخدام تطبيقنا مع كل من AIR وZinc3 وكلاهما يقوم بإخراج تمثيل XML متوافق مع NUnit ثم الخروج من التطبيق (مع رمز الخروج -1 في حالة فشل أي اختبارات).

// import mx.core.Application;
// import flexunit.framework.*;

// class AutomatedTestHarness extends Application implements TestListener

private function creationCompleteHandler(event : Event) : void
{
    this._result = new TestResult();
    this._result.addListener(this);

    var testSuite : TestSuite = new TestSuite();
    this.addUnitTests(testSuite);

    testSuite.runWithResult(_result);
}

/**
  * Implement these as part of TestResult.addListener
  * If you want to output xml after the tests run, do so here
  * (Tip: Count tests in endTest and compare the count to testSuite.countTestCases()
  * to find out when all tests have completed)
  */
function startTest(test : Test) : void {}
function endTest(test : Test) : void {}
function addError(test : Test, error : Error) : void {}
function addFailure(test : Test, error : AssertionFailedError) : void {}

ربما يمكنك استخدام flexunit.textui.TestRunner، الذي يقوم بإخراج النتيجة إلى وحدة التحكم.

لقد قمنا بأخذ جميع التعليمات البرمجية التي نريد اختبارها في مشاريع المكتبة في الاعتبار.لدينا بعد ذلك مشروع منفصل لاختباراتنا، وهو مشروع مرن يعتمد على المشروع قيد الاختبار.

يحاول AS3Unit من ليبسبارك.لديهم أيضًا مجموعة أدوات اختبار تجريبية غير متزامنة.

جرب AS3Unit من libspark.لديهم أيضًا مجموعة أدوات اختبار تجريبية غير متزامنة.

يجب أن تعمل إزالة عنصر "excludedEntries" في ملف .actionScriptProperties الخاص بمشروعك، وأنا أستخدم هذه الطريقة لإنشاء ملف mxml في مشروع actionscript الخالص الخاص بي.

يمكنك التحقق من كيف قمنا بذلك قم بإعداد البنية لـ Robotlegs باستخدام FlexUnit4 ومهام CI الخاصة بهم.

للتحكم في الإصدار، نقوم بإزالة جميع ملفات مشروع Flex/Flash Builder.تم إعداد مجلدي src وtest كمسارات src.يتم إجراء الاختبارات عبر بناء النمل.وبدلاً من ذلك، يمكن إعداد مشروع ثانٍ مع عداء إذا كنت تعيش في عداء اختبار بصري.

لقد كان فعالاً للغاية وسهل الاستخدام عبر العديد من المساهمين.

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