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

テストとテスト ジェネレーターを混在させています。

要するに、2 番目のものは楽しみまたは楽しみのリストを返す必要があります。_テスト名の末尾と_マクロの先頭の両方で区別できます。

簡単な解決策は、どちらかを使用することです

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、既存のテンプレートの 1 つを呼び出すか拡張するだけです。

于 2014-11-24T11:59:00.787 に答える