在哪里放置 eunit 的测试文件?

Where to put test file for eunit?

我正在尝试测试从磁盘加载文件并对其进行一些操作的功能。我的项目分为 src/ 和 test/ 目录。我将测试文件放在 test/ 目录下,并尝试 运行 加载该文件的单元测试。但是,当 运行 从 IDE (IntelliJ) 或使用钢筋的控制台进行测试时,文件似乎不可见。

$ ./rebar eunit
==> traffic-emas (eunit)
input_test: load_from_file_test...*failed*
in function input:load_intersection_definition/1 (src/input.erl, line 40)
in call from input_test:load_from_file_test/0 (test/input_test.erl, line 14)
**error:{badmatch,{error,enoent}}

我应该将 eunit 的测试文件放在哪里以使其可见?

Rebar 的 documentation suggests 您应该在模块本身内部放置特定于模块的 eunit 测试。例如:

-ifdef(TEST).

simple_test() ->
    ok = application:start(myapp),
    ?assertNot(undefined == whereis(myapp_sup)).

-endif.

你可以在你的 eunit 测试中打印出工作目录,看看它认为它在哪里 运行:

debugVal(file:get_cwd())

这应该可以让您知道将它放在哪里。