使用rebar3 eunit
,它可以在测试中处理-include("some_file.hrl")
,但这不适用于rebar3 ct
。出于某种原因,当我使用rebar3 ct
时,它会尝试编译我的eunit测试并失败,因为它无法找到eunit测试中使用的.hrl文件。 ...can't find include file "some_file.hrl"
我做错了什么?当我试图进行CT测试时,为什么要编译eunit测试?
答案 0 :(得分:2)
快速回答:
eunit的其他编译选项。 erl_opts可以像rebar3一样使用:
{eunit_compile_opts, [
{i, "custominclude"},
{i, "include"},
{i, "deps/nice/include"},
{i, "/usr/lib64/erlang/lib/some-1.3.0/include"}
]}.
有关此主题的更多信息
rebar3改变了执行eunit测试的方式。
原始的rebar2行为是将您的项目和测试目录中的任何内容(包括子目录)编译到目录.eunit,然后从每个文件运行测试。这就是为什么你的include文件指令可以在rebar2下工作,因为所有文件都包含在内并集中在一起。
默认情况下,Rebar3将测试设置为[{application,yourapp}]。rebar3的eunit命令首先进行一些准备工作,然后调用eunit:test(测试,EUnitOpts)。
请注意:
http://www.rebar3.org/docs/from-rebar-2x-to-rebar3
由于rebar3 ct会将所有这些考虑在内,更具可配置性和自动化程度更低(不包括所有应用程序和deps),这可能会发生在你身上。