تست در مسیر Objective-C

بیاموزید چطور تمرین‌های Objective-C خود را در Exercism تست کنید


Exercism فقط یک فایل test دانلود می‌کند. باید فایل هدر و فایل سورس مربوط به تمرین را خودتان به‌صورت دستی بسازید. باید یک فایل پروژه‌ی Xcode شامل فایل test، فایل هدر (.h) و فایل سورس (.m) بسازید. یا می‌توانید از ابزار test runner که در ادامه توضیح داده شده است استفاده کنید.

ساختن پروژه در Xcode

  • Xcode را باز کنید و یک پروژه‌ی جدید بسازید.
  • «OS X > Application» و سپس «Command Line Tool» را انتخاب کنید.
  • روی «Next» کلیک کنید و به پروژه یک اسم بدهید؛ بهتر است اسم پروژه را ExerciseName بگذارید.
  • روی «Next» کلیک کنید و پروژه را در پوشه‌ی تمرین Exercism ذخیره کنید.
  • حالا که پروژه ساخته شد، روی «Editor > Add Target» کلیک کنید.
  • «OS X > Test» را انتخاب کنید و بعد «OS X Unit Testing Bundle» را انتخاب کنید.
  • اسم target را ExerciseName Tests بگذارید.
  • در پنل سمت چپ (که به آن «navigator» می‌گویند)، «Project navigator» را باز کنید، پوشه‌ی ExerciseName Tests را گسترش دهید و فایل ExerciseName_Tests.m را باز کنید.
  • محتوای آن را با فایل test دریافتی از Exercism جایگزین کنید.
  • در همان فایل، همه‌ی موارد «test_suite» را با «ExerciseName_Tests» جایگزین کنید.
  • به کتابخانه‌ی «File Template» در پنل سمت راست بروید (یا از CTRL+OPTION+CMD+1 استفاده کنید) و قالب «Cocoa Class» را به پوشه‌ی ExerciseName_Tests در «Project navigator» بکشید.
  • اسم آن را ExerciseName بگذارید و «ExerciseName Tests» را به‌عنوان target آن انتخاب کنید.
  • حالا دو فایل جدید در پوشه‌ی ExerciseName_Tests دارید: ExerciseName.h و ExerciseName.m.
  • در «Project navigator» روی پروژه‌تان کلیک کنید.
  • در فهرست targetها روی «ExerciseName Tests» کلیک کنید.
  • در نوار ناوبری ویرایشگر، «Build Phases» را انتخاب کنید.
  • مطمئن شوید که هر دو فایل .m شما در فهرست compile sources هستند.
  • با CMD+5 به «Test navigator» بروید.
  • روی bundle به اسم «ExerciseName Tests» کلیک راست کنید و «Enable ExerciseName_Tests» را کلیک کنید.
  • testها را با کلیک روی مثلث رو به راست که با نگه داشتن نشانگر روی bundle در «Test navigator» ظاهر می‌شود اجرا کنید، یا از CMD+U استفاده کنید.

testها از طریق Xcode اجرا می‌شوند.

نکته: اگر خطای «No visible @interface for ExerciseName declares the selector ExerciseSelector,» را دریافت کردید، یعنی مراحل را درست انجام داده‌اید، اما هنوز چیزی در فایل‌های هدر/پیاده‌سازی خود ننوشته‌اید. پس از آنکه متد خود را در فایل .h اعلام کردید و آن را در فایل .m تعریف کردید، testهای شما خطاهای مفیدتری ایجاد می‌کنند که شما را به سمت تکمیل تمرین هدایت می‌کند. برای اطلاعات بیشتر این مقدمه‌ای درباره‌ی کلاس‌های Objective-C را بخوانید.

یک test runner

راه دیگری به‌جای ساختن دستی فایل پروژه این است که از ابزار test runner استفاده کنید که با ruby نوشته شده است، objc؛ این ابزار فایل پروژه‌ای همراه با فایل test، فایل هدر و فایل سورس برایتان می‌سازد.

$ gem install objc

testها را با این دستور اجرا کنید:

$ objc -x ExerciseName

(به فلگ -x/--xcodebuild توجه کنید که استفاده از xcodebuild به‌جای xctool را مشخص می‌کند. مورد دوم با آخرین نسخه‌های Xcode کار نمی‌کند.)

ابزار objc از اسم تمرین استفاده می‌کند تا فایل test، یعنی ExerciseNameTest.m، فایل هدر، یعنی ExerciseName.h، و فایل سورس، یعنی ExerciseName.m، را پیدا کند. این فایل‌ها در یک پروژه‌ی موقت Xcode قرار داده می‌شوند و سپس xcodebuild برای اجرای testهای آن پروژه به کار می‌رود.

هرچند objc باعث می‌شود برای تکمیل این تمرین‌ها هرگز لازم نباشد Xcode را باز کنید، پیام‌های خطا و بازخوردی که از خط فرمان می‌گیرید به‌اندازه‌ی رابط کاربری Xcode شفاف نیستند.