在 Objective-C 賽道上測試

了解如何在 Exercism 上測試你的 Objective-C 練習


Exercism 只會下載測試檔。你需要自己手動建立這道練習的標頭檔和原始碼檔案。你得產生一個 Xcode 專案檔,裡面包含測試檔、標頭檔(.h)和原始碼檔案(.m)。或者,你也可以使用下方介紹的測試執行工具。

在 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 檔案。
  • 把它的內容替換成你從 exercism 取得的測試檔。
  • 在該檔案中,把所有「test_suite」都替換成「ExerciseName_Tests」。
  • 前往右側面板的 File Template library(或按 CTRL+OPTION+CMD+1),把 Cocoa Class 範本拖曳到 Project navigator 中的 ExerciseName_Tests 資料夾。
  • 將它命名為 ExerciseName,並選擇 ExerciseName Tests 作為它的 target。
  • 現在你的 ExerciseName_Tests 目錄裡會有兩個新檔案:ExerciseName.h 和 ExerciseName.m。
  • 在 Project navigator 中點一下你的專案。
  • 在 targets 清單中點一下 ExerciseName Tests。
  • 在編輯器的導覽列中選擇 Build Phases。
  • 確認你的兩個 .m 檔案都在 compile sources 清單中。
  • 使用 CMD+5 前往 Test navigator。
  • 在名為 ExerciseName Tests 的 bundle 上按滑鼠右鍵,然後點選 Enable ExerciseName_Tests。
  • 在 Test navigator 中把游標移到 bundle 上時會出現一個朝右的三角形,點它就能執行測試;或者也可以使用 CMD+U。

測試會透過 Xcode 執行。

注意: 如果你收到「No visible @interface for ExerciseName declares the selector ExerciseSelector,」這個錯誤,表示你的步驟都做對了,只是還沒在標頭檔和實作檔裡寫任何東西。當你在 .h 檔中宣告方法、並在 .m 檔中定義它之後,測試就會提出更有用的錯誤,引導你完成這道練習。想了解更多細節,請閱讀這篇 Objective-C 類別入門。

測試執行工具

除了手動產生專案檔之外,另一個選擇是使用以 ruby 撰寫的測試執行工具 objc,它會幫你產生一個包含測試檔、標頭檔和原始碼檔案的專案檔。

$ gem install objc

用以下指令執行測試:

$ objc -x ExerciseName

(注意 -x/--xcodebuild 這個旗標,它指定使用 xcodebuild 而不是 xctool。後者無法搭配 Xcode 最新的版本運作。)

objc 工具會用練習名稱來尋找測試檔 ExerciseNameTest.m、標頭檔 ExerciseName.h 和原始碼檔案 ExerciseName.m。這些檔案會被放進一個暫時的 Xcode 專案,然後再用 xcodebuild 執行該專案的測試。

雖然有了 objc,你就不必為了完成這些練習而開啟 Xcode,但命令列上的錯誤訊息和回饋,不像 Xcode 使用者介面那麼清楚。