如何使用rebar创建一个带有eunit测试的erlang模块?

时间:2014-11-24 08:42:43

标签: erlang rebar eunit

我的目标很简单;当我正在学习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, []}
 ]}.

1 个答案:

答案 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或扩展其中一个现有模板。