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}}]}.