我的目标很简单;当我正在学习Erlang时,我想使用rebar来创建一个带有eunit测试的基本模块:
我尝试了以下内容:
mkdir erlangscratch
cd erlangscratch
rebar create template=simplemod modid=erlangscratch
编辑'test / erlangscratch_tests.erl'如下所示:
-module(erlangscratch_tests).
-include_lib("eunit/include/eunit.hrl").
% This should fail
basic_test_() ->
?assert(1 =:= 2).
执行测试:
snowch@tp:~/erlangscratch$ rebar co eu
==> erlangscratch (compile)
==> erlangscratch (eunit)
测试没有执行,但似乎代码也没有编译。
以下是我的文件夹的内容:
snowch@tp:~/erlangscratch$ tree .
.
├── src
│ └── erlangscratch.erl
└── test
└── erlangscratch_tests.erl
2 directories, 2 files
问题:我错过了哪些步骤?
更新
根据接受的答案,需要重命名basic_test_
函数并且缺少'src / erlangscratch.app.src',所以我使用以下内容创建它:
{application, erlangscratch,
[
{description, "An Erlang erlangscratch library"},
{vsn, "1"},
{modules, [
erlangscratch
]},
{registered, []},
{applications, [
kernel,
stdlib
]},
{env, []}
]}.
答案 0 :(得分:1)
您正在使用test generators混合测试。
简而言之,第二个应该返回乐趣或乐趣列表。您可以通过测试名称末尾的_
和_
以及宏的开头来区分它们。
简单的解决方案是使用
basic_test() ->
?assert(1 =:= 2).
或
basic_test_() ->
?_assert(1 =:= 2).
取决于您的需求,以及您更了解的内容。
编辑
似乎螺纹钢没有将您的项目识别为OTP application。您可能只是缺少简单的.app.src
文件。类似的东西:
{application, myapp,
[
{description, ""},
{vsn, "1"},
{registered, []},
{applications, [
kernel,
stdlib
]},
{env, []}
]}.
由于钢筋能够为您生成一个,您只需拨打rebar create-app
或扩展其中一个现有模板。