我正在使用Emacs并尝试让我的单元测试工作流程尽可能自动化。我已将其设置为正常工作但我必须在Erlang Shell识别我的更改之前手动编译我的测试模块或包含测试的模块。
我有两个文件mymodule.erl
和mymodule_tests.erl
。我希望能做的是:
eunit:test(mymodule)
或mymodule_tests:test()
我已经尝试编写自己的测试方法,但它不起作用。
-module (mytests).
-export([test/0]).
-import(mymodule).
-import(mymodule_tests).
-import(code).
test() ->
code:purge(mymodule),
code:delete(mymodule),
code:load_file(mymodule),
code:purge(mymodule_tests),
code:delete(mymodule_tests),
code:load_file(mymodule_tests),
mymodule_tests:test().
我还尝试将-compile(mymodule).
放入mymodule_tests,看看我是否可以在更新mymodule_tests时自动重新加载mymodule,但无济于事。
我也搜索过相当多但无法找到相关信息。因为我是Erlang的新手,我想我正在寻找错误的术语,例如: erlang reload module
,或者在编译另一个模块时不应该重新加载其他模块。
答案 0 :(得分:9)
也许Erlang make可以帮到你。
make:all([load]).
阅读文档:
此功能首先查看 文件的当前工作目录 命名为Emakefile(见下文) 要编译的模块集和 编译要使用的选项。如果没有这样的话 找到文件,将模块集合到 编译默认为。中的所有模块 当前的工作目录。
关于“加载”选项:
加载模式。加载所有重新编译 模块。
还有一个make:files/1,2
,允许您指定要检查的模块列表。
答案 1 :(得分:2)
您是否尝试使用l(mymodule).
在编译后重新加载模块?