2

私はErlangのチュートリアルをいくつか終えたばかりのErlangの初心者です。TDDのバックグラウンドから来て、私はErlangのいくつかのTDDの原則に従うべきだと思いました。私は自分のコードを以下のように整理しました

root
|- tests
|   |- name_builder_tests.erl
|- src
|   |- name_builder.erl

ディレクトリでErlangシェルを起動しrootます。しかしerl、そこからファイルをコンパイルすることはできないので、それらのファイルの1つに変更を加えるたびに、testsまたはディレクトリに切り替える必要があり、それらをコンパイルする必要があります。src

モジュールをコンパイルしたり、特定のモジュールから関数を実行したりするときに、すべてのサブディレクトリでモジュールを探すようにシェルに指示する方法はありますか?私が尋ねようとしているのは、私のシェルがrootディレクトリにある場合、次のように正常に実行できるかどうかです。

c(name_builder).
c(name_builder_tests).
4

3 に答える 3

3

このようなコードを整理しましょう。

root
|- test
|   |- name_builder_tests.erl
|- src
|   |- name_builder.erl
|- rebar
|- rebar.config

'./rebarcompileeunit'を実行するより。ここで見つけることができる鉄筋スクリプトとドキュメントhttps://github.com/basho/rebar/wiki

于 2013-01-14T12:14:02.417 に答える
1

単体テストを行う際のアプローチの1つは、本番コードと同じモジュール内にテストを配置することです。

-module(my_code).
-export([run/0]).

run() -> ok.

-ifdef(TEST).
-include_lib("eunit/include/eunit.hrl").

run_test() ->
    ?assertEqual(ok, run()).

-endif.

そうすれば、あなたはあなたの近くにテストを持っています。コードの可用性に関しては、「-pa」パラメーターを使用してerlangシェルを実行し、コードの場所を指定する必要があります。

erl -pa src/

これは、デフォルトでコンパイルしているため、ビームファイルがソースと同じフォルダに配置されるためです。しかし、私はあなたの人生を楽にするので、鉄筋のようなものを使うことをお勧めします。

HTH、アリン

于 2013-01-13T20:43:18.653 に答える
1

Emakefileを使用してこれを実行し、ソースファイルを探す場所をコンパイラに指示することもできます。

ルートディレクトリにEmakefileという名前のファイルを次の内容で作成します

{'src/*', [debug_info,
   {i, "src"},
   {i, "include"},     
   {outdir, "ebin"}]}.
{'test/*', [debug_info,
    {i, "src"},
    {i, "include"},
    {i, "test"},        
    {outdir, "ebin"}]}.

次に、これを使用してすべてのモジュールをコンパイルします。これにより、erl -makeすべての.beamファイルがebin/dir内に配置されます。

erl -pa ebin/次に、ebinディレクトリをsysパスに追加するコマンドを実行してシェルを起動します

PS 1:私もほとんどアーラン初心者です。このアプローチはLearn You Some Erlangから、より正確にはこのレッスンから学びました。

PS 2:これよりも複雑になる予定のアプリで作業している場合は、鉄筋を確認することをお勧めします

于 2013-01-14T14:57:37.947 に答える