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}}]}.
上次修改時間:2023 年 1 月 9 日:修復損壞的連結 (da4612d)