كيف نفعل TDD في أندرويد؟ الجزء 2 - هندسة المشروع ، الإعداد واختبار الوحدة

سيذهب هذا البرنامج التعليمي إلى بنية المشروع والإعداد من البداية ، وأخيراً سنكتب بعض اختبارات الوحدة.

في لماذا يخاف المطورون من كود refactor و الجزء الأول من هذه السلسلة ، قمنا بتغطية أهمية اختبار الأتمتة ، ما هو اختبار الهرم ، ما هو نوع الاختبار ، ما هي الأدوات التي يمكن استخدامها للقيام TDD في android وحيث توجد مجلدات الاختبار تقع.

هندسة المشاريع

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

هناك العديد من نماذج البنية التي تدعم بسهولة TDD Model – View-Presenter (MVP) ، Model- View- Viewmodel (MVVM).

نحن نختار MVP لسلسلة البرنامج التعليمي الخاص بنا.

  1. عادة ما يكون طراز POJO يستخدمه مقدم العرض و View لنقل المعلومات أو التصرف بناءً عليه.
  2. طريقة العرض (النشاط أو الشظية) هي واجهة سلبية تعرض البيانات. هذا هو المكان الذي نقوم فيه بضبط البيانات وإجراء تغييرات مرتبطة بواجهة المستخدم مثل إخفاء طريقة العرض المتحركة.
  3. مقدم العرض يقرر منطق العرض التقديمي ، منطق العمل لدينا موجود هنا. يتحدث إلى مستودع يحصل على البيانات ، وتنسيقه لعرضه في الرأي. يقرر ما يجب عرضه على View.Try تجنب استخدام رمز Android المحدد في مقدم العرض قدر الإمكان (أعرف أنه في بعض الأحيان يكون الأمر أصعب).

إعداد مشروع

سننشئ في هذا المنشور تطبيق Android بسيط من البداية. التطبيق الذي سنقوم بإنشائه هو تطبيق بسيط يقوم بتسجيل الدخول ويستغرق حضور الطلاب.

  1. افتح Android Studio حدد "بدء مشروع Android جديد"
  2. أدخل اسم التطبيق هو "StudentAttendance" ، مجال الشركة "nilesh.tdd.com". انقر فوق التالي

3. حدد إصدار Android الذي تريد الدعم وانقر فوق "التالي"

4. حدد "نشاط فارغ" وانقر فوق "التالي"

5. أدخل اسم النشاط وانقر فوق "إنهاء"

6. هيكل المشروع النهائي سيبدو أدناه الصورة

وحدة التجارب

بعد إجراء بعض عمليات إعادة هيكلة الحزمة ، إلتزم بإتمام إجراءات المغادرة (81d1668667bcb5eacf4cf94a8dffe738ad206d67)

استخدم أدناه الأوامر

git clone https://github.com/NileshJarad/TDD_Demo.git
بوابة الخروج 81d1668667bcb5eacf4cf94a8dffe738ad206d67

إذا كان شخص ما يحصل أدناه خطأ بعد الخروج

ثم قم بتغيير الإصدار build.gradle إلى 2.1.2 في build.gradle المشروع

أخيرًا ، نحن هنا للحصول على أيدي قذرة على الترميز .

سنقوم الآن بكتابة أول حالة اختبار للتحقق من "إذا حاول المستخدم تسجيل الدخول بعد ثلاث محاولات ، فسوف نظهر له / لها رسالة الخطأ"

انتقل إلى com.tdd.nilesh.studentattendance.login.LoginPresenter class. المؤشر فوق اسم الفصل واضغط SHIFT + CTRL + T (لنظام التشغيل Mac SHIFT + CMD + T) ، سيظهر هذا الإطار في نافذة "إنشاء اختبار جديد".
سيتم تلقائيًا اختيار اسم الفصل للاختبار وإلحاق الاختبار في نهاية اسم الفصل في حالتنا LoginPresenterTest.
انقر فوق موافق . وسوف يطفو على السطح مرة أخرى على نافذة اختبار المجلد. بينما نكتب JUnit select ../app/src/test/… فإنه سيتم إنشاء فئة اختبار بنفس بنية الحزمة.

أقوم بنشر لقطة من الشفرة لأنني أريدك أن تكتب رمزًا.
الآن سوف نكتب اختبار كما هو الحال في لقطة الشاشة أدناه.

يشير شرح الاختبارTest إلى أنه اختبار. كما تشير incrementLoginAttempt & isLoginAttemptExceeded إلى اللون الأحمر. يجب علينا إنشاء طريقة في LoginPresenter. اضغط ALT + ENTER لإنشاء أساليب في فئة مقدم العرض كما هو موضح أدناه.

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

كما كتبنا فشل اختبار الإخراج من الاختبار يجب أن يكون على النحو التالي.
نتوقع 1 كإخراج لكننا نحصل على 0.

الآن سوف نكتب تنفيذ اختبار اجتياز للاختبار. أدناه هو تنفيذ لاجتياز الاختبار.

مرة أخرى تشغيل الاختبار يجب أن يمر .

استخدم أدناه أمر السحب لـ Repo حتى الآن.

بوابة الخروج 302962ea6f63aa3afba003efa043ebacbaf02345

الآن يجب عليك كتابة اختبار checkIfLoginAttemptIsNotExceeded وتحقق مما إذا كان تطبيقك صحيحًا أم لا. إذا لم تكن كذلك ، فلا تقلق ، فسيتم الالتزام التالي.

الآن نريد التحقق من "اسم المستخدم وكلمة المرور صحيحان"

لذلك سوف نكتب اختبار أدناه هو كيف يبدو (فشل اختبار )

كرر العملية مرة أخرى لـ ALT + ENTER وتشغيل الاختبار. نظرًا لأنه فشل الاختبار ، فسيظهر تنبيهًا أحمر للفشل.

الآن سوف نكتب تنفيذه على النحو التالي.

قم بإجراء الاختبار مرة أخرى وسوف يمر الآن.

جرب الآن اختبار حالة checkUsernameAndPasswordIsInCorrect.

استخدم أدناه أمر السحب لـ Repo حتى الآن.

git checkout 4771fbfb8c6cbda98d9f01ac5e035ea02f0f5da6

وفي الوقت نفسه ، أود أن أسمع الاقتراحات والمدخلات في هذا الشأن.

هتافات !!!.

ضرب بلطف ♥ ️ أدناه.

الخروج بعد ذلك: