rebar3使用介绍(七)测试

本文介绍如何使用Rebar3进行eunit和common_test测试,包括运行测试、指定测试参数、选择特定应用或模块进行测试,以及如何启用代码覆盖率分析。

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.coverdatarebar3 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值