Automated tests 如何使用rebar3使用适当的代码设置测试?

Automated tests 如何使用rebar3使用适当的代码设置测试?,automated-tests,erlang,eunit,rebar3,Automated Tests,Erlang,Eunit,Rebar3,我通过rebar3模板创建了一个简单的应用程序,例如: apps/myapp/app/myapp\u app.erl -module(myapp_app). -behaviour(application). -export([start/2, stop/1]). start(_StartType, _Params) -> ok. stop(_State) -> ok. -module(myapp_test). -include_lib("eunit/inc

我通过
rebar3
模板创建了一个简单的应用程序,例如:

apps/myapp/app/myapp\u app.erl

-module(myapp_app).

-behaviour(application).

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

start(_StartType, _Params) ->
    ok.

stop(_State) ->
    ok.
-module(myapp_test).

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

simple_test() ->
    myapp_app:start(ok, 42).
我为此写了一个测试:

apps/myapp/test/myapp\u test.erl

-module(myapp_app).

-behaviour(application).

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

start(_StartType, _Params) ->
    ok.

stop(_State) ->
    ok.
-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
中是否有要添加的内容?

rebar3
找不到您的
。如果您在
/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
意味着在运行时评估调用时可以。要帮助查看
rebar3
正在做什么,我强烈建议,
DEBUG=1

如果自定义目录中有.erl文件而不是“src”,则需要将其添加到代码路径中

您可以使用rebar3通过修改
'rebar.config'
中的
erl\u opts
部分来完成此操作,如下所示

{erl_opts, [debug_info, {src_dirs, ["src", "app"]}]}. 
希望这对你有用