إنشاء اختبارات nunit دون تصديرها باستخدام واجهة برمجة التطبيقات

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

  •  03-07-2019
  •  | 
  •  

سؤال

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

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

المحلول

وملف اختبار ليس بالضرورة أن يكون في نفس الحزمة في طبقة يجري اختبارها. في الواقع، بل هو ممارسة جيدة لديك ملفات اختبار في حزمة منفصلة تماما، والسماح لهم لاختبار API العام دون أن تهتم تفاصيل التنفيذ على مستوى الحزمة.

وبدلا من ذلك، يمكنك إعداد الخاص بك بناء النصي (مثل نانت) إلى تجاهل الملفات التي تحتوي على "اختبار" عند إنشاء الإفراج القابل للتنفيذ.

نصائح أخرى

واستطيع ان اقول IntelliJ للأو النملة ليس لحزم JUnit الاختبارات في نشر. لدي اختبارات في دليل منفصل من شفرة المصدر، وهو ما يجعل من الممكن.

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

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

وهذه عادة ما يؤدي تصميمي لاحتواء الفصول الصغيرة مع وظيفة واضحة المعالم، والتي هي أسهل للاختبار.

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

وأنا أتفق أيضا أنه من الأفضل لفصل الاختبار والإنتاج التعليمات البرمجية.

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

أعتقد أنه من الخطأ نقل كود الاختبار الخاص بك خارج حزمة CUT (الفئة قيد الاختبار).في مرحلة ما، قد ترغب في اختبار طريقة أو فئة محمية، ووجود رمز الاختبار الخاص بك في حزمة أخرى يجعل ذلك صعبًا أو مستحيلًا.

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

src/main/java/com/example/Foo.java
src/test/java/com/example/FooTest.java

ثم يمكن ببساطة تجاهل البرنامج النصي للبناء الخاص بك src/test/** عندما يحين وقت التعبئة والنشر.

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