mbsheikh
mbsheikh

Reputation: 2521

Is there a way of only running unit tests in a single module using Eunit in Erlang/OTP?

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() ->
  ...
  ...

Upvotes: 8

Views: 3918

Answers (5)

joao cenoura
joao cenoura

Reputation: 1225

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

$ rebar3 eunit --module=mod1,mod2,mod3

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

$ rebar3 eunit --test=mod1:test1+test2,mod2:test1

References:

https://rebar3.org/docs/testing/eunit/

Upvotes: 9

Kiko Fernandez
Kiko Fernandez

Reputation: 997

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()

Upvotes: 0

Grant Winney
Grant Winney

Reputation: 66439

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.

Upvotes: 3

iuriza
iuriza

Reputation: 1

You could also use:

rebar clean eunit suite=your_module

Upvotes: 0

Adam Lindberg
Adam Lindberg

Reputation: 16577

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

Upvotes: 5

Related Questions