Как настроить тесты с соответствующим кодом, используя rebar3? - PullRequest
2 голосов
/ 29 марта 2020

Я создал простое приложение с помощью rebar3 шаблонов, таких как:

apps/myapp/app/myapp_app.erl

-module(myapp_app).

-behaviour(application).

-export([start/2, stop/1]).

start(_StartType, _Params) ->
    ok.

stop(_State) ->
    ok.

Я написал для этого тест:

apps/myapp/test/myapp_test.erl

-module(myapp_test).

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

simple_test() ->
    myapp_app:start(ok, 42).

К сожалению, когда я запускаю тест, кажется, что связь между двумя файлами не установлена:

$ rebar3 eunit
===> Verifying dependencies...
===> Compiling shoreline
===> Performing EUnit tests...
F
Failures:

  1) myapp_test:simple_test/0
     Failure/Error: {error,undef,
                        [{myapp_app,start,"*",[]},
                         {myapp_test,simple_test,0,
                             [{file,
                                  "/.../apps/myapp/test/myapp_test.erl"},
                              {line,8}]},
                         {myapp_test,simple_test,0,[]}]}
     Output:

Finished in 0.074 seconds
1 tests, 1 failures
===> Error running tests

Есть ли что добавить в rebar.config

Ответы [ 2 ]

2 голосов
/ 29 марта 2020

Если у вас есть файлы .erl в пользовательском каталоге, отличном от 'sr c', вам нужно добавить его в путь к коду.

Вы можете сделать это с помощью rebar3, изменив erl_opts раздел в 'rebar.config', как показано ниже.

{erl_opts, [debug_info, {src_dirs, ["src", "app"]}]}. 

Надеюсь, это сработает для вас.

1 голос
/ 29 марта 2020

rebar3 не находит ваши .erl файлы, если вы были под /app Я переместил их в /src.

➜  myapp rebar3 eunit
===> Verifying dependencies...
===> Compiling myapp
===> Performing EUnit tests...
.
Finished in 0.081 seconds
1 tests, 0 failures
➜  myapp ls
LICENSE      README.md    _build       rebar.config src          test
➜  myapp mv src app
➜  myapp rebar3 eunit
===> Verifying dependencies...
===> Performing EUnit tests...
F
Failures:

  1) myapp_test:simple_test/0: module 'myapp_test'
     Failure/Error: {error,undef,
                           [{myapp_app,start,[ok,42],[]},
                            {myapp_test,simple_test,0,[]}]}
     Output:

Finished in 0.036 seconds
1 tests, 1 failures
===> Error running tests

undef означает, что не может быть найдено при оценке вызова во время выполнения. 2 Чтобы понять, что делает rebar3, я настоятельно рекомендую debug , DEBUG=1.

...