了解如何在 Exercism 上測試你的 Emacs Lisp 練習
Elisp 測試使用 ERT 來執行,這是 Emacs Lisp 的一套迴歸與單元測試函式庫。執行測試的方式有好幾種。
若要在 Emacs 中互動式執行測試:
M-x eval-buffer RET
M-x ert RET test-name RET
M-x ert RET t RET
請注意,這會執行目前載入 Emacs 的所有測試!M-x eval-buffer RET
若只想執行目前緩衝區中的測試,可以把以下內容加到你的 .emacs 或 init.el:
(defun my-eval-and-run-all-tests-in-buffer ()
"Delete all loaded tests from the runtime, evaluate the current buffer and run all loaded tests with ert."
(interactive)
(ert-delete-all-tests)
(eval-buffer)
(ert 't))
重新啟動 Emacs 之後:
M-x my-eval-and-run-all-tests-in-buffer RET在練習的過程中,互動式測試很方便,但如果你想確認某個練習是否已經準備好提交,批次模式測試會更適合。
若要在終端機中以批次模式執行所有測試,請執行 emacs -batch -l ert -l *-test.el -f ert-run-tests-batch-and-exit
上面的指令有點冗長,所以如果你喜歡的話:
$PATH 中建立一個名為 ert-run 的檔案(通常放在 ~/bin)#!/usr/bin/env sh
emacs -batch -l ert -l $1 -f ert-run-tests-batch-and-exit
chmod +x ert-run 讓檔案變成可執行這樣你只要呼叫 ert-run *-test.el,就能以批次模式執行測試了。
其他選項可以在文件中找到,C-h i m ert RET。
由於 Emacs 本身就是一個 elisp 翻譯員,你正在撰寫的程式碼永遠處於它原生的執行環境中。你可以在任何形式的結尾按下 C-x e 來求值,或用 M-x eval-region 對選取的範圍求值,或用 M-x eval-buffer 對整個緩衝區求值。這在你需要快速除錯時非常有用。
由於你的程式碼和測試都是有效的 elisp,建議你把練習程式碼放在一個緩衝區窗格中,與它的測試並排顯示,像這樣:

用 C-x 3 將畫面垂直分割,用 C-x o 切換到新視窗,再用 C-x C-f /path/to/file 開啟檔案。