簡體   English   中英

如何使用鋼筋通過eunit測試創建erlang模塊?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM