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

كيف تبدو؟
على سبيل المثال ، خذ أي تطبيق يوفر إنشاء حساب مستخدم. هو المستخدم الذي يصبح كائن المجال لدينا. في جميع الحالات تقريبًا ، يجب أن يكون لدى المستخدم اسم مستخدم وكلمة مرور:
ستلاحظ الحقول التي تتسم بالحرص الشديد أن جميع الحقول الداخلية خاصة. يعتبر إعداد وقراءة القيم مباشرةً من حقول الكائن ممارسة سيئة. بدلاً من ذلك ، من المعتاد استخدام الحروف والأدوات المعروفة:
public class User { private String login; private String password;
الآن ، لدينا حق الوصول إلى الحقول ، ويمكننا تعيين وقراءة قيمهم. لكن في هذا المثال ، نستخدم حقلين فقط. وماذا يحدث إذا كان هناك خمسة عشر من هذه الحقول؟ صحيح أن فئة المستخدم تتوسع إلى أحجام غير مسبوقة ، وذلك بفضل لصق نسخة لا نهائية من الحروف والأدوات. كيف سنتعامل مع هذا؟
السحر lombok
هذا هو المكان
الذي يأتي فيه
Project Lombok إلى الإنقاذ - مكتبة شائعة تتيح لنا تقليل الشفرة عدة مرات ، وتجنب معاناة النسخ / اللصق ، وتقليل مقدار الوقت اللازم لكتابة فصول كائن البيانات إلى حد كبير. بعض الروابط المفيدة:
ماذا يفعل؟ يقوم تلقائيًا بإنشاء مجموعات وتثبيتات لجميع حقول الفصل ، من خلال تعيين التعليق التوضيحي المقابل:
import lombok.Getter; import lombok.Setter;
بسيطة وسريعة ومريحة. وبالتالي ، يصبح كودنا أكثر قابلية للقراءة ، والفصول الدراسية أكثر إيجازًا ، والتطور أسرع.
تطبق في الاختبار
الاختبار الجيد هو اختبار يتم فيه فصل بيانات الاختبار ومنطق الاختبار وتنفيذه بوضوح.دعونا نحاول تسجيل الدخول مستخدمنا. ننشئ فئة مع بيانات الاختبار ، و "ملء" لهم مستخدم جديد:
وصفنا نموذج صفحة تسجيل الدخول:
public class LoginPage {
يبقى فقط لتنفيذ فئة الاختبار:
public class LoginTest { @Test public void loginAsDefaultUser() {
انتهى أنت رائع!
لتلخيص
في النهاية ، نحصل على بنية مشروع
أنيقة ، مع الفصل الواضح بين المنطق والبيانات والتنفيذ. تساعدك لومبوك على التخلص من ازدواجية التعليمات البرمجية ، ويتوافق كائن المجال تمامًا مع فلسفة كائن الصفحة ، ويصبح دعم الشفرة متعة حقيقية.
يجب أن يكون هناك السلبيات؟- الحصانة. أو بالأحرى غيابه. في هذا ، يفقد هذا النهج باستخدام لومبوك المنافس الرئيسي - باني ( مقال عن Habré ). ولكن ، في رأيي ، الكود أعلاه هو "نظيف" ومفهوم وممتع من الناحية الجمالية ، مقارنة بالسلسلة التي لا تنتهي في المنشئ وكومة الطرق في فئة الكائن.
- زيادة التعقيد حيث لا تكون هناك حاجة لذلك. ليس كثيرا ناقص كتذكير صغير. أي نهج أو نمط هو مشكلة ويجب حل مشكلة معينة. يجب ألا تحاول استخدام "كائن البيانات" في اختبار وحدة يتحقق فقط من 2 + 2 = 4.
شكرا جزيلا لاهتمامكم سوف أكون سعيدًا بالمراجعات والنقد.
ملاحظة أخبر في التعليقات ما هي النهج التي تستخدمها في عملك. سيكون من المثير للاهتمام للغاية أن تقرأ.