تست در مسیر C++

بیاموزید چگونه تمرین‌های C++ خود را در Exercism تست کنید


هر تمرین، تست‌های واحد و یک دستور ساخت CMake را ارائه می‌دهد. پیاده‌سازی را خودتان می‌نویسید. هر فایل تست قرار است به پیاده‌سازی شما پیوند بخورد و یک فایل اجرایی کنسولی بسازد که تست‌ها را اجرا می‌کند. اجرای فایل اجرایی تست، برای هر تست ناموفق پیامی چاپ می‌کند و اگر تست‌ها شکست بخورند، وضعیت خروج ناصفر گزارش می‌دهد.

توجه: هر بار که پروژه‌تان را می‌سازید، کد شما در برابر مجموعه‌ی تست آزموده می‌شود. اگر کد شما یک یا چند تست را پاس نکند اما کد معتبر C++ باشد، باز هم کامپایل می‌شود.

گذراندن هر تمرین یک فرایند است:

  • ساخت اولیه با CMake
  • برای هر تست واحد:
    • خطاهای کامپایل را برطرف کنید تا تست شکست بخورد.
    • فقط به اندازه‌ای پیاده‌سازی کنید که تست پاس شود.
    • پیاده‌سازی خود را بازآرایی کنید تا خوانایی‌اش بیشتر شود، تکرار کم شود و غیره.
    • تست بعدی را از حالت کامنت خارج کنید

ساخت اولیه با CMake

هر تمرین در کنار تست‌های واحد یک فایل CMakeLists.txt هم دارد. این فایل دستور آماده‌ی CMake را در خود دارد تا ساخت را برایتان انجام دهد. نیازی نیست این فایل را ویرایش کنید. دستور ارائه‌شده فرض می‌کند که پیاده‌سازی شما به شکل یک فایل هدر و یک فایل منبع هم‌نام تمرین وجود دارد.

برای نمونه، تمرین bob پیاده‌سازی را در bob.h و bob.cpp انتظار دارد. برای تمرین‌هایی که در نامشان خط تیره دارند، فرض می‌شود فایل‌های منبع از زیرخط استفاده می‌کنند، بنابراین word-count فایل‌های word_count.h و word_count.cpp را انتظار دارد. ممکن است تصمیم بگیرید پیاده‌سازی شما آن‌قدر ساده است که کاملاً در هدر جا می‌گیرد؛ در این صورت می‌توانید فایل cpp را حذف کنید.

پیش از اجرای CMake، فایل‌های اولیه‌ی پیاده‌سازی را بسازید. اگر هنگام اجرای CMake برای تمرین bob فایل‌های bob.h و bob.cpp را نداشته باشید، CMake خطایی درباره پیدا نشدن فایل‌ها تولید می‌کند. این فایل‌ها می‌توانند خالی باشند، اما باید وجود داشته باشند.

با این دستور، CMake می‌تواند با اجرای cmake -G همراه با یک تولیدکننده‌ی مناسب و مسیر دایرکتوری تمرین، پروژه‌ای مناسب محیط شما بسازد. CMake یک اسکریپت ساخت متناسب با سیستم‌عامل شما تولید می‌کند. برای اینکه آن فایل‌های تولیدشده از کد منبع تمرینتان جدا بمانند، معمولاً دایرکتوری‌ای به نام build می‌سازند تا هم فایل‌های ساخت تولیدشده و هم کد کامپایل‌شده را در خود جای دهد. این کار پوشه‌ی تمرین شما را مرتب و بدون شلوغی نگه می‌دارد.

وقتی CMake محیط ساخت را ساخت، می‌توانید کد خود را با فرمان مناسب محیطتان بسازید:

  • Linux با make: make
  • Windows با Visual Studio: از منو گزینه‌ی Build / Build Solution را انتخاب کنید.
  • MacOS با Xcode: از نوار ابزار گزینه‌ی Build را انتخاب کنید
  • MacOS با «Unix Makefile»: make اگر از برنامه‌ی exercism CLI استفاده می‌کنید

نمونه‌هایی از اجرای CMake در محیط‌های مختلف در ادامه آمده است.

Linux با Make

نام تولیدکننده برای CMake، Unix Makefiles است. فرض کنید تمرین فعلی bob است و در پوشه‌ی تمرین هستیم:

$ touch bob.{h,cpp}
$ mkdir build
$ cd build
$ cmake -G "Unix Makefiles" ..
$ make

این نمونه نشان می‌دهد که پیش از اجرای CMake، فایل‌های خالی برای پیاده‌سازی ساخته می‌شوند.

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

Windows با Visual Studio

Visual Studio از پروژه‌های CMake پشتیبانی بومی دارد، بنابراین نیازی نیست CMake را جداگانه نصب کنید یا آن را بیرون از Visual Studio اجرا کنید. برای راه‌اندازی پروژه‌ی CMake در Visual Studio، این راهنما را دنبال کنید.

MacOS با Xcode

نام تولیدکننده برای CMake، Xcode است. فرض کنید تمرین فعلی bob است و در پوشه‌ی تمرین هستیم:

$ touch bob.{h,cpp}
$ mkdir build
$ cd build
$ cmake -G Xcode ..

این نمونه فایل‌های XCode را تولید می‌کند تا بتوانید پروژه را در XCode باز کنید. با باز بودن پروژه در XCode، ممکن است لازم باشد هدف دیگری اضافه کنید. برای هدفی جدید، از منو به File -> New -> Target بروید، سپس OS X \ Application \ Command Line Tool و بعد از آن C++ را به عنوان زبان انتخاب کنید و نامی برای هدف وارد کنید. کد را با استفاده از این هدف اجرا کنید.

اگر ترمینال شما خطای Xcode x.x not supported را نمایش دهد، به احتمال زیاد Xcode روی دستگاهتان نصب نیست یا نسخه‌تان قدیمی است. لطفاً Xcode را از App Store یا از این لینک دانلود و نصب کنید. خطاهایی شبیه به The CXX compiler identification is unknown هم احتمالاً با دنبال کردن دستورهای نصب GCC یا با افزودن هدف دیگری در Xcode به روش پاراگراف بالا برطرف می‌شوند.

MacOS با Make هنگام استفاده از Exercism CLI

این نمونه به‌طور ویژه به کسانی کمک می‌کند که می‌خواهند از برنامه‌ی Exercism CLI برای پیکربندی، تست کردن و ارسال تمرین‌های C++ خود استفاده کنند.

نام تولیدکننده برای CMake، Unix Makefiles است. فرض کنید تمرین فعلی bob است و در پوشه‌ی تمرین هستیم:

$ touch bob.{h,cpp}
$ cmake -G "Unix Makefiles" .
$ exercism test

در این نمونه، پیش از اجرای CMake فایل‌های خالی برای پیاده‌سازی می‌سازیم، اما دایرکتوری خالی build را نمی‌سازیم. دلیلش این است که Exercism CLI برای تجزیه‌ی موارد تست از فایل .exercism/metadata.json در دایرکتوری ریشه استفاده می‌کند.

کافی است در دایرکتوری ریشه دستور exercism test را تایپ کنید تا تست‌ها کامپایل شوند. این کار باید خطاهای زمان کامپایل را تولید کند. وقتی خطاها برطرف شدند، اجرای دوباره‌ی exercism test تست‌ها را با استفاده از Exercism CLI می‌سازد و اجرا می‌کند.