هل يوجد جافا وحدة اختبار إطار السيارات-اختبارات حاصل على واضعي?[مغلقة]

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

  •  01-07-2019
  •  | 
  •  

سؤال

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

كانت هناك العديد من بلوق وظائف على استخدام جافا انعكاس السيارات-اختبار مثل هذه الأساليب.

هل هناك أي إطار (مثلا ، jUnit) توفير مثل هذه الميزة ؟ على سبيل المثالالشرح تقول "هذا اختبار T أن السيارات-اختبار جميع حاصل/واضعي الفئة C ، لأنني تؤكد أنها هي المعيار".

يبدو لي أنه سيكون إضافة قيمة ، وإذا كان شكلي ، 'النقاش' سيكون ترك الخيار للمستخدم.

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

المحلول

Unitils هل هذا w/ أسلوب ثابت assertRefEquals.

نصائح أخرى

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

أشك في أن autotesting حاصل على واضعي تستفيد رمز الجودة أو التغطية الخاصة بك:أما هذه الأساليب تستخدم من التعليمات البرمجية الأخرى (واختبارها هناك ، على سبيل المثالتغطية بنسبة 100%) أو عدم استخدامها على الإطلاق (يمكن إزالتها).في النهاية عليك أن تترك حاصل على واضعي فى لأنها تستخدم من الاختبار ولكن في أي مكان آخر في التطبيق.

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

أنا خلقت OpenPojo مشروع حل هذه بالضبط المشكلة.

المشروع يسمح لك للتحقق من:

  • فرض Pojo الترميز القياسية (أيجميع الحقول الخاصة أو لا أصلي المتغيرات ، ...الخ)
  • فرض Pojo السلوك (أيواضع هل مجرد وضع ، لا تحول ، الخ)
  • التحقق من صحة Pojo الهوية (أياستخدام الشرح على أساس المساواة و hashcode الجيل)

انظر البرنامج التعليمي

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

  • هي قيم فارغة ممكن ؟
  • هي سلاسل فارغة ممكن ؟
  • أو سلبية القيم ؟
  • أو صفر القيمة ؟
  • أو القيم من قائمة هي صالحة ؟
  • أو هل هناك اقصى قيمة ؟
  • أو هل هناك قدر من الدقة على BigDecimal القيم ؟

اختبار الوحدة يجب أن تحقق ما إذا كان السلوك الصحيح إذا كان هناك قيم غير صالحة.هذا لا يمكن أن يكون آليا.

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

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

لقد فعلت شيئا مثل هذا.جافا بسيط الفئة التي تأخذ كائن اختبار جميع حاصل واضعة الأساليب.http://sourceforge.net/projects/getterandsetter/

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

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

أعتقد أن هذه المكتبة هو الجواب على سؤالك

وهي تختبر كل فول القيم الأولية ، setters, ، getters, hashCode(), equals() and toString().كل ما عليك القيام به هو تحديد خارطة الافتراضية وغير الافتراضية المنشأة/قيمة.

فإنه يمكن أيضا اختبار الكائنات التي هي الفول إضافية غير الافتراضي المنشئات.

أنا أحاول من openpojo

تم طرد الإطارات و يبدو للقيام بهذه المهمة.

  1. فإنه يسمح لك للتحقق من جميع pojo في المشروع الخاص بك.
  2. يبدو أن تحقق أفضل الممارسات على pojo هو

تحقق من هذا البرنامج التعليمي للحصول على بداية سريعة البرنامج التعليمي

الرد على التعليق السابق في @لي هنا بسبب سمعتي:

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

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

مرة أخرى, هذه الأساليب هي في الواقع ضرورية.ثم, هناك احتمالان:
1.هناك منطق الأعمال داخلها.ثم أنها sould اختبار ، لكنها ليست حقيقية حاصل/المحددات.أنا دائما أكتب هذا المنطق في فئات أخرى.و الاختبارات اختبار الطبقات الأخرى ، ليس POJO.
2.لم يكن هناك.ثم لا تكتب لهم من جهة ، إذا كنت تستطيع.على سبيل المثال ، تنفيذ القادم قد يكون واجهة بالكامل إنشاؤه تلقائيا (و أيضا في وقت التشغيل!) :

interface NamedAndObservable {
  String getName();
  void setName(String name);
  void addPropertyChangeListener(PropertyChangeListener listener);
  void addPropertyChangeListener(String propertyName,
                                 PropertyChangeListener listener);
}

لذلك اختبار فقط ما هو مكتوب باليد.لا يهم إذا كانت جالبة/واضع.

أنا لا أكتب حالات الاختبار لكل عقار, ولكن بدلا من ذلك اختبار كل من واضعي/حاصل في اختبار واحد الحالة باستخدام انعكاس/introspector لتحديد نوع(s).هنا هو كبير من الموارد التي تبين هذا:

http://www.nearinfinity.com/blogs/scott_leberknight/do_you_unit_test_getters.html

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