rebar3使用介绍(七)测试
Rebar3内置了eunit和ct(common_test)测试运行器。通过遵循一些约定,您可以使用单个Rebar3命令运行测试套件。
eunit
运行eunit测试非常简单:
$ rebar3 eunit
Rebar3将带上宏{d, TEST, true}和{d, EUNIT, true}编译所有项目模块,以便您可以安全地隐藏测试代码-ifdef(TEST).或-ifdef(EUNIT).部分。它还将自动编译应用程序test目录中的任何源文件(如果存在)。然后通过调用eunit:test([{application, App}])测试项目中的每个应用程序。
如果要eunit:test/1使用自己的参数调用,可以使用rebar.config的eunit_tests字段。该参数和在shell里加的参数是等价的,文档在这里。Rebar3将尽力确保编译测试中指定的任何模块并使其在代码路径上可用。
您还可以仅针对特定应用运行测试:
$ rebar3 eunit --application=some_app,some_other_app
或仅适用于特定模块:
$ rebar3 eunit --module=a,b,c
或者对于特定的测试文件:
$ rebar3 eunit --file="test/my_tests.erl"
或具体目录:
$ rebar3 eunit --dir="test"
common test (ct)
要运行common_test:
$ rebar3 ct
Rebar3将查看所有应用程序的test目录,并编译并运行任何名为的源文件*_SUITE.erl。
要仅运行特定的测试:
$ rebar3 ct --suite=test/first_SUITE,test/second_SUITE
Rebar3有一个内置的common_test运行器,支持大多数测试套件和common_test选项。如果您的测试套件需要使用测试规范或覆盖规格,请注意Rebar3为每个配置文件保留单独的空间,因此,您可能需要调整路径,以指向_build下相关配置文件目录中的模块和目录,以便它们按预期工作。如果需要使用不支持的common_test选项,可以在由rebar3编译过的beam目录下使用以下命令运行common_test
$ ct_run -pa `rebar3 path` ...
代码覆盖率
设置选项{cover_enabled, true},然后运行任何eunit或ct。或者,运行rebar3 eunit --cover或rebar3 ct --cover。
测试运行将生成覆盖数据。之后执行rebar3 cover将生成代码覆盖率报告。
cover工具将会把.coverdata格式的报告保存到对应空间的cover目录下,默认报告文件的名字和任务相关,比如rebar3 ct --cover对应ct.coverdata而rebar3 eunit -cover对应eunit.coverdata。
额外参数--cover_export_name可用于指定.coverdata文件的名称,例如,如果一个项目有2套测试用例,测试用例test/suites1/和test/suites2:
$ rebar3 ct --dir test/suites1 --cover --cover_export_name=suites1
===> Running Common Test suites...
...
$ rebar3 ct --dir test/suites2 --cover --cover_export_name=suites2
===> Running Common Test suites...
...
$ ls _build/test/cover
cover.log suite1.coverdata suite2.coverdata
$ rebar3 cover --verbose
===> Performing cover analysis...
|----------------------------|------------|
| module | coverage |
|----------------------------|------------|
| .... | Y% |
|----------------------------|------------|
| total | X% |
|----------------------------|------------|
coverage calculated from:
_build/test/cover/suites1.coverdata
_build/test/cover/suites2.coverdata
cover summary written to: _build/test/cover/index.html
本文介绍如何使用Rebar3进行eunit和common_test测试,包括运行测试、指定测试参数、选择特定应用或模块进行测试,以及如何启用代码覆盖率分析。
439

被折叠的 条评论
为什么被折叠?



