How to automate module reloading when unit testing with Erlang?
I'm using Emacs and trying to get my unit testing work flow as automated as possible. I have it set up so it is working but I have to manually compile my module under test or the module containing the tests before the Erlang Shell recognizes my changes.
I have two files mymodule.erl
and mymodule_tests.erl
. What I would like to be able to do is:
- Add test case to mymodule_tests
- Save mymodule_tests
- Switch to the Erlang Shell
- Run tests with one line, like
eunit:test(mymodule)
ormymodule_tests:test()
- Have Erlang reload mymodule and mymodule_tests before actually performing the tests
I have tried writing my own test method but it doesn't work.
-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().
I have also tried by putting -compile(mymodule).
into mymodule_tests to see if I could get mymodule to automatically reload when updating mymodule_tests but to no avail.
I have also googled quite a bit but can't find any relevant information. As I'm new to Erlang I'm thinking that I'm either searching for the wrong terms, e.g. erlang reload module
, or that you are not开发者_Python百科 supposed to be able reload other modules when compile another module.
Maybe the Erlang make can help you.
make:all([load]).
Reading from the doc:
This function first looks in the current working directory for a file named Emakefile (see below) specifying the set of modules to compile and the compile options to use. If no such file is found, the set of modules to compile defaults to all modules in the current working directory.
And regarding the "load" option:
Load mode. Loads all recompiled modules.
There's also a make:files/1,2
which allows you to specify the list of modules to check.
Have you tried using l(mymodule).
to reload the module after it's been compiled?
精彩评论