[英]how to use rebar to create an erlang module with an eunit test?
我的目標很簡單; 當我學習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, []}
]}.
您正在將測試與測試生成器混合。
簡而言之,第二個應該返回fun或fun的列表。 您可以通過測試名稱末尾的_
和宏的開頭_
來區分。
簡單的解決方案將使用
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
或擴展現有模板之一即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.