C 語言中的測試

學習如何在 Exercism 上測試你的 C 練習


每個練習都會附上單元測試和一份 Make 建置規則, 而實作則由你來提供。

每個測試檔都必須與你的實作連結,產生一個可在主控台執行的執行檔來執行測試。 執行測試執行檔時,每個失敗的測試都會印出訊息,並在測試失敗時回報非零的結束狀態。

要完成一個練習:

  • 用 Make 建立初始組建
  • 針對每個單元測試:
    • 移除 TEST_IGNORE() 這一行。
    • 解決所有編譯錯誤,讓測試能夠失敗。
    • 只實作足夠讓測試通過的部分。
    • 重構你的實作,提升可讀性、減少重複等。

編譯並執行測試

每個練習都會附帶一個 makefile,以及內含單元測試的 .c 檔。 你應該不需要編輯 Make 檔。 提供的 Make 檔會假設你的實作是以與練習同名的標頭檔(.h)和原始檔(.c)存在。

例如,練習 bob 會預期實作出現在 bob.h 和 bob.c 中。 若練習名稱含有連字號,原始檔會假設使用底線,因此 word-count 會預期 word_count.h 和 word_count.c。 你可能會覺得自己的實作夠簡單,可以完全放在標頭檔裡,這樣就能省略 .c 檔。

在執行 Make 之前,先建立你的初始實作檔案。 如果你在為練習 bob 執行 Make 時沒有 bob.h 和 bob.c 這兩個檔案,Make 就會產生找不到檔案的錯誤。 這些檔案可以是空的,但必須存在。

建置你的程式碼

建置程式碼最簡單的方式,就是在命令列使用 make(CLI)。 在 Linux 上,CLI 可在 bash 或類似環境中使用,在 MacOS 上請使用 Terminal。 在 Windows 10 上,則可使用 Windows Subsystem for Linux(WSL)的 Bash。

做法如下,假設目前所在目錄就是練習資料夾:

$ make

這會編譯你的程式碼並執行測試。

makefile 也附帶一個建置目標,用來檢查一些常見錯誤,例如記憶體洩漏和陣列越界存取。 若要執行這些檢查,請在命令列輸入以下指令:

$ make memcheck

清理

建置完成後若要清理,可以請 make 刪除所有建置產物,包括執行檔:

$ make clean

MacOS 的替代建置方式

在 MacOS 上,你也可以使用 Xcode。 若要建置程式碼,請從工具列選擇 Build。