پرش به مطلب اصلی

Unit Test

مقدمه

در این فاز با Unit Test و مفهوم Code Coverage آشنا می‌شوید. همچنین برای کدی که در فازهای قبلی نوشته‌اید، تست می‌نویسید و کیفیت کد خود را بیش از پیش افزایش می‌دهید.

خوب است اما نیم‌نگاهی به مسئله تست به طور کلی داشته باشیم. در تصویر زیر می‌توانید سطوج مختلف تست را مشاهده کنید:

مفهوم Unit Test و اهمیت آن

برای آگاهی از اهمیت نوشتن Unit Test در فرایند توسعه نرم‌افزار، لینک‌های زیر را مطالعه کنید:

مفهوم Code Coverage در Unit Testing و اهمیت آن

پس از مطالعه و درک مفهوم Unit Testing و اهمیت آن در توسعۀ‌ نرم‌افزار، برای درک مفهوم Code Coverage و اهمیت آن لینک‌های زیر را مطالعه کنید:

نوشتن Unit Test در java با استفاده از jUnit

برای شروع کار با jUnit پیشنهاد می‌شود Getting Started with jUnit Code را مطالعه کنید. همچنین می‌توانید نحوۀ مشاهدۀ Code Coverage را در intelliJ Idea از طریق این لینک ببینید.

تاثیر اصول SOLID بر Unit Testing

برای آگاهی از تاثیر رعایت اصول SOLID بر تست‌نویسی SOLID, Object Oriented Design and Unit Testing را مطالعه کنید.

آشنایی با مبانی TDD

برای درک مفهوم TDD و مراحل آن لینک‌های زیر را مطالعه کنید:

آشنایی بیشتر با اصول SOLID و تاثیر آن بر TDD

در این مرحله، فکر کنید که هر یک از اصول SOLID، چگونه می‌تواند بر ساده‌تر شدن روند TDD تاثیر بگذارد. با هم‌تیمی خود در این مورد بحث کنید.

در ادامه برای درک این موضوع لینک‌های زیر را مطالعه کنید:

در جستجوی تست!

حال می‌خواهیم پروژه‌های که پیشتر ساخته‌ایم را یک قدم به محصول واقعی نزدیک‌تر کنیم و برای آن یونیت‌تست بنویسیم. با استفاده از دانشی که در این فاز بدست آورده‌اید سعی کنید برای هسته اصلی این سرویس جست‌وجو (فقط هسته اصلی!) یونیت‌تست بنویسید و coverage آن بخش از پروژه را به ۱۰۰٪ نزدیک کنید.

همچنین در این فاز می‌خواهیم یک ویژگی جدید و جالب را به پروژه‌مان اضافه کنیم. تصور کنید لیست بلندی از کاربران پیام‌رسان را در اختیار دارید که هر کدام دارای نام و نام خانوادگی مشخصی به صورت یکتا هستند. حال به عنوان یک کاربر می‌خواهیم لیستی از افرادی که نام و یا نام خانوادگیشان با عبارت `` آغاز می‌شود را پیدا کنیم. مشابه زمانی که به دنبال یک کالای خاص در فروشگاه اینترنتی می‌گردیم ... حال از شما می‌خواهیم این قابلیت را برای برنامه خود با رویکرد TDD پیاده‌سازی کنید. به نظرتان چگونه می‌توان از چنین قابلیتی پشتیبانی کرد.