EUnit
執行所有 EUnit 測試套件
$ rebar3 eunit
Rebar3 將使用已定義的巨集 ` {d, TEST, true} ` 和 ` {d, EUNIT, true} ` 編譯所有專案模組,以便您可以安全地將測試程式碼隱藏在 ` -ifdef(TEST). ` 或 ` -ifdef(EUNIT). ` 區塊中。如果有的話,它還會自動編譯應用程式 ` test ` 目錄中的任何原始碼檔案。預設情況下,Rebar3 會透過為專案中的每個應用程式呼叫 ` eunit:test([{application, App}]) ` 來執行測試。
預設情況下,` eunit ` 指令以 ` test ` 設定檔執行。詳情請參閱設定檔。
有關可用選項及其用法,請參閱指令或
$ rebar3 help eunit
測試選取
以下旗標可以單獨提供或組合使用。
應用程式
僅針對特定應用程式執行測試
$ rebar3 eunit --application=app1,app2
格式是以逗號分隔的應用程式名稱列表。
別名:` --app `。
模組
僅針對特定模組執行測試
$ rebar3 eunit --module=mod1,mod2,mod3
格式是以逗號分隔的模組名稱列表。
別名:` --suite `。
測試案例
僅執行特定的測試案例
$ rebar3 eunit --test=mod1:test1+test2,mod2:test1
格式是以逗號分隔的測試函式列表。
產生器
僅執行特定的測試案例產生器
$ rebar3 eunit --generator=mod1:gen1+gen2,mod2:gen1
格式是以逗號分隔的測試函式列表。
檔案
僅針對特定檔案執行測試
$ rebar3 eunit --file="test/mod1.erl,test/mod2.erl"
格式是以逗號分隔的檔案路徑列表。
目錄
僅針對特定目錄執行測試
$ rebar3 eunit --dir="test,extra_tests"
格式是以逗號分隔的目錄路徑列表。
測試函式格式
選擇特定測試函式的格式是以逗號分隔的 ` Module:Func ` 規格列表。可以透過使用加號 ` + ` 分隔同一個模組中的多個函式來選取它們,例如 ` Module:Func1+Func2 `(或者可以使用分號 ` ; ` 分隔它們)。
設定選項
可以在 ` rebar.config ` 中設定以下設定選項。
eunit_tests
您可以更改在執行 ` rebar3 eunit ` 時呼叫 ` eunit:test/1 ` 的預設測試(而不是預設值,即所有應用程式中的所有測試)。
設定必須是具有 EUnit 測試表示形式的列表,如此處所述這裡。Rebar3 將盡力確保測試中指定的任何模組都已編譯並在程式碼路徑上可用。
範例
{eunit_tests, [{module, smoke_tests}]}.
{eunit_tests, [{inparallel, mod1}]}.
eunit_opts
可以設定預設的 EUnit 選項,如此處所述這裡。
有趣的未記錄選項是
-
` no_tty ` 完全停用預設的 EUnit 報告器輸出
-
` {report, {Module, Args}} ` 執行自定義 EUnit 報告器(將結果列印到 shell 的功能)。報告器模組需要實作以下回呼
-export([start/0]). -export([start/1]). -export([init/1]). -export([handle_begin/3]). -export([handle_end/3]). -export([handle_cancel/3]). -export([terminate/2]).
可以組合使用 ` no_tty ` 和 ` report ` 將 EUnit 報告器替換為自定義報告器
{eunit_opts, [no_tty, {report, {my_reporter, Opts}}]}.