0

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

1 回答 1

1

您正在将测试与测试生成器混合使用。

简而言之,第二个应该返回有趣的或有趣的列表。_您可以通过测试名称的末尾和_宏的开头来区分。

简单的解决方案是使用

basic_test() ->
    ?assert(1 =:= 2).

或者

basic_test_() ->
    ?_assert(1 =:= 2).

取决于您的需求,以及您更好地理解的内容。


共享文件夹结构后编辑

似乎 rebar 没有将您的项目识别为OTP 应用程序。您可能只是缺少简单的.app.src文件。就像是:

{application, myapp,
 [
  {description, ""},
  {vsn, "1"},
  {registered, []},
  {applications, [
                  kernel,
                  stdlib
                 ]},
  {env, []}
 ]}.

由于 rebar 能够为您生成一个,您只需调用rebar create-app或扩展现有模板之一。

于 2014-11-24T11:59:00.787 回答