سؤال

وماذا كنت تستخدم لكتابة الاختبارات التي تعتمد على البيانات في أداة JUnit؟

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

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

المحلول

في JUnit4 يمكنك استخدام testrunner معلمات للقيام البيانات مدفوعة الاختبارات.

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

يمكنك كتابة التعليمات البرمجية لقراءة وتحليل ملف نصي خارجي في طريقة @Parameters (أو الحصول على بيانات من مصدر خارجي آخر)، ثم تريد ان تكون قادرا على إضافة اختبارات جديدة عن طريق تحرير هذا الملف من دون اعادة تجميع الاختبارات.

نصائح أخرى

وهذا هو المكان، معDataSource لها، يضيء TestNG. هذا هو أحد الأسباب التي أنا أفضل أن أداة JUnit. والبعض الآخر تبعيات وموازية الخيوط الاختبارات.

وأنا استخدم قاعدة بيانات في الذاكرة مثل HSQLDB حتى أستطيع أن إما قبل ملء قاعدة البيانات مع " على غرار إنتاج "مجموعة من البيانات أو أستطيع أن تبدأ مع قاعدة بيانات HSQLDB فارغة وملء مع الصفوف التي أنا بحاجة لأداء اختبار بلدي. وعلاوة على ذلك سأكتب بلدي التجارب باستخدام أداة JUnit و <لأ href = "http://code.google كوم / ع / mockito / "يختلط =" noreferrer "> Mockito .

ويمكنني استخدام مزيج من dbUnit و <لأ href = "HTTP: // شبكة الاتصالات العالمية. jmock.org/ "يختلط =" نوفولو noreferrer "> jMock و أداة JUnit 4. ثم يمكنك الأثير تشغيله كما جناح أو بشكل منفصل

وكنت أفضل حالا توسيع TestCase مع "DataDrivenTestCase" التي تناسب احتياجاتك. هنا تعمل سبيل المثال: http://mrlalonde.blogspot.ca/2012/08 /data-driven-tests-with-junit.html

وعلى عكس اختبارات معلمات، فإنه يسمح لحالات الاختبار اسمه لطيف.

وأنا مع @ DroidIn.net، وهذا هو بالضبط ما أقوم به، ولكن للإجابة على سؤالك حرفيا "ويعرض النتائج في عداء اختبار كما لو كنت قد اختبارات منفصلة،" لا بد من النظر في JUnit4 عداء معلمات. DBUnit لا تفعل ذلك. إذا كان لديك لتفعل الكثير من هذا، وبصراحة TestNG أكثر مرونة، ولكن يمكنك الحصول عليها القيام به على الاطلاق في أداة JUnit.

ويمكنك أيضا أن ننظر في عداء نظريات أداة JUnit، ولكن ذاكرتي هو أنه ليست كبيرة للبيانات مدفوعة قواعد البيانات، أي نوع من المنطقي لأن أداة JUnit ليس حول العمل مع كميات كبيرة من البيانات الخارجية.

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

وهناك المزيد من العوائق على النحو المحدد في هذا بلوق وظيفة سلسلة: <في أ href = "http://www.kumaranuj.com/2012/08/junits-parameterized-runner-and-data.html" يختلط = "نوفولو "> http://www.kumaranuj.com/2012/08/junits-parameterized-runner-and-data.html

والآن هناك حل شامل القادمة على طول جميلة لطيف في شكل EasyTest الذي امتد على إطار من أداة JUnit ومن المفترض ان تعطي الكثير من وظائف لمستخدميها. التركيز الأساسي هو على أداء بيانات مدفوعة اختبار باستخدام أداة JUnit، على الرغم من أنك لست في حاجة إلى الاعتماد على الواقع أداة JUnit بعد الآن. هنا هو المشروع جيثب لل refernece: https://github.com/anujgandharv/easytest

إذا كان أي شخص مهتم في المساهمة أفكارهم / القانون / اقتراحات ثم وهذا هو الوقت المناسب. يمكنك ببساطة الذهاب إلى المخزون جيثب وخلق القضايا.

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

ولدينا حاليا ملف الدعائم مع أرقام ID لدينا في ذلك. هذا هو هش فظيعة، ولكن من السهل الحصول على شيء ما يحدث. خطتنا هي أن يكون في البداية هذه الأرقام ID للتجاوز من قبل -D العقارات في يبني لدينا النمل.

وبيئتنا يستخدم DB إرث مع البيانات المتشابك فظيعة غير loadable قبل تشغيل (على سبيل المثال عن طريق dbUnit). في النهاية نود أن نصل إلى ما وحدة الاختبار سيكون الاستعلام عن DB لإيجاد ID مع الخاصية تحت الاختبار، ثم استخدام هذا الرقم في اختبار وحدة. فإنه سيكون بطيئا وأكثر دعا صحيح اختبار التكامل، وليس "اختبار وحدة"، ولكن سنكون اختبار ضد بيانات حقيقية لتجنب الحالة التي يعمل التطبيق لدينا تماما ضد بيانات الاختبار ولكن فشل مع بيانات حقيقية.

وبعض الاختبارات سوف تصلح لتكون واجهة مدفوعة.

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

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