6

I have a number of modules with unit tests. Is there a way of only running unit tests in a single module?

This is what the relevant section of the module looks like:

-export([ ..... ])
-include_lib("eunit/include/eunit.hrl").
...
...
...
first_test() ->
  ...
  ...

second_test() ->
  ...
  ...
2240
  • 1,547
  • 2
  • 12
  • 30
mbsheikh
  • 2,501
  • 5
  • 23
  • 33

5 Answers5

6

Run all tests in the module/suite (as iuriza's answer):

rebar eunit suite=mod_name

Or you can also specify an individual test case (by function name):

rebar eunit tests=mod_name:test_name

References:

Grant Winney
  • 65,241
  • 13
  • 115
  • 165
joao cenoura
  • 1,155
  • 2
  • 14
  • 20
5

eunit:test(yourmodule) or yourmodule:test() should work.

Adam Lindberg
  • 16,447
  • 6
  • 65
  • 85
3

If you're using rebar3 you can use the --module option per their Running Tests doc.

rebar3 eunit --module=your_module

If you have tons of modules, but only want to run tests for a few of them, you can separate the names with commas:

rebar3 eunit --module=first_module,second_module,third_module

The documentation has a lot of tips for limiting the tests run to a single application, file, etc.

Grant Winney
  • 65,241
  • 13
  • 115
  • 165
0

You could also use:

rebar clean eunit suite=your_module
iuriza
  • 1
0

Improving on the response from Adam Linberg, I did:

rebar3 as test shell

which makes possible to compile unit test files. Then you can type:

eunit:test(yourmodule)

or

yourmodule:test()
Kiko Fernandez
  • 857
  • 10
  • 26