2014-11-24 39 views
0

我的目标很简单,而我学习二郎,我想用螺纹钢创建具有eunit测试的基本模块:如何使用钢筋来创建erun模块并进行eunit测试?

我曾尝试以下:

mkdir erlangscratch 
cd erlangscratch 
rebar create template=simplemod modid=erlangscratch 

编辑“测试/ erlangscratch_tests.erl”看像这样:

-module(erlangscratch_tests). 
-include_lib("eunit/include/eunit.hrl"). 

% This should fail 
basic_test_() -> 
    ?assert(1 =:= 2). 

执行测试:

[email protected]:~/erlangscratch$ rebar co eu 
==> erlangscratch (compile) 
==> erlangscratch (eunit) 

测试并没有执行,但它似乎也没有编译代码。

这里是我的文件夹的内容:

[email protected]:~/erlangscratch$ tree . 
. 
├── src 
│   └── erlangscratch.erl 
└── test 
    └── erlangscratch_tests.erl 

2 directories, 2 files 

问:什么步骤(S)我已经错过了?


UPDATE:

按照公认的答案,需要将改名为basic_test_功能和“SRC/erlangscratch.app.src”不见了,所以我用下面的内容创建它:

{application, erlangscratch, 
[ 
    {description, "An Erlang erlangscratch library"}, 
    {vsn, "1"}, 
    {modules, [ 
      erlangscratch 
      ]}, 
    {registered, []}, 
    {applications, [ 
        kernel, 
        stdlib 
       ]}, 
    {env, []} 
]}. 

回答

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或扩展现有模板之一。

+0

感谢您的回答 - 不幸的是,在'basic_test _()'中移除'_'后,运行'rebar co eu'仍然会得到相同的结果。我还提供了我的问题的更新,以显示我的工作文件夹的内容。 – 2014-11-24 12:53:41

+2

使用'simplelib'钢筋模板而不是'simplemod',因为后者不会创建.app.src文件,没有该钢筋就不会编译任何东西。运行'rebar create template = simplelib libid = erlangscratch'来代替,假设你已经有'basic_test'而不是'basic_test_',它就会像你期望的那样工作。 – 2014-11-24 14:07:17

相关问题