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

Unit Test

مقدمه

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

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

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

برای آشنایی بیشتر با مبحث Unit Test ویدیو زیر را مشاهده کنید.

Structure and Interpretation of Test Cases

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

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

بعد از مطالعه مطالب بالا می‌توانید این مقاله که نگاه دقیقی به Test Coverage از زبان Martin Fowler است را مطالعه کنید

Test Coverage

نوشتن Unit Test در #C با استفاده از xUnit

برای شروع کار با xUnit، پیشنهاد می‌شود Using xUnit to Test your C# Code و Getting Started with xUnit.net را مطالعه کنید. همچنین می‌توانید نحوۀ مشاهدۀ Code Coverage را برای IDEهای Visual Studio و Rider از طریق لینک‌های زیر یاد بگیرید:

برای آشنایی بهتر با xUnit مشاهده Writing tests in .NET using xUnit پیشنهاد می‌شود.

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

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

آشنایی با Mock

یک تکنیک تست‌نویسی، Mock کردن است که در آن، قسمتی از کد را با یک پیاده‌سازی دلخواه جایگزین می‌کنیم که از آن برای شبیه‌سازی یک عملیات واقعی استفاده می‌شود. معمولا Mock کردن زمانی استفاده می‌شود که یک متد یا کلاس، وابستگی یا وابستگی‌هایی دارد که در تست ما تداخل نامطلوبی ایجاد می‌کند.

مثلا فرض کنید می‌خواهید سرویسی را تست کنید که در آن از یک SmsSender استفاده شده‌است. در نتیجه هر بار که آن تست را اجرا کنید، یک SMS نیز ارسال می‌شود، که این برای ما مطلوب نیست.

در این صورت، باید SmsSender را Mock کرد که دیگر SMS ارسال نکند، ولی خروجی مشخصی بدهد. در نتیجه می‌توانیم عملکرد همان متد را تست کنیم، به جای این که بخواهیم درگیر وابستگی‌های آن شویم.

برای آشنایی بهتر با Mock و نحوۀ استفاده این تکنیک در زبان #C از لینک‌های زیر کمک بگیرید:

پیشنهاد می‌کنیم برای مطالعه بیشتر درباره تست‌نویسی در #C مقالۀ Writing Unit Tests with xUnit, NSubstitute and FluentAssertions را مطالعه کنید.

در این مرحله، با استفاده از دانشی که در این فاز به دست آورده‌اید، برای پروژه Full Text Search تست بنویسید. سعی کنید code coverage تست های خود را به 100% نزدیک کنید.

از اعضای دیگر تیم‌ها بخواهید تست‌های شما را Review کنند و همچنین شما نیز نگاهی به تست بقیه گروه‌ها داشته باشید. آیا با دید یکسانی تست نوشته‌اید؟ برای چه بخشی تست ننوشته بودید و دلیل آن چه چیزی بوده؟