From b5d4cb91f80c833795a2d87050c3674bb7aecdc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Tue, 3 Oct 2017 13:39:41 +0200 Subject: Update Hugo, docs --- docs/en/erlang.mk/1/guide/eunit/index.html | 283 +++++++++++++++-------------- 1 file changed, 147 insertions(+), 136 deletions(-) (limited to 'docs/en/erlang.mk/1/guide/eunit') diff --git a/docs/en/erlang.mk/1/guide/eunit/index.html b/docs/en/erlang.mk/1/guide/eunit/index.html index d3af8b7b..83435883 100644 --- a/docs/en/erlang.mk/1/guide/eunit/index.html +++ b/docs/en/erlang.mk/1/guide/eunit/index.html @@ -7,7 +7,7 @@ - + Nine Nines: EUnit @@ -67,147 +67,158 @@

EUnit

-

EUnit is the tool of choice for unit testing. Erlang.mk -automates a few things on top of EUnit, including the -discovery and running of unit tests.

-
-

Writing tests

-
-

The EUnit user guide -is the best place to learn how to write tests. Of note is -that all functions ending with _test or _test_ will be -picked up as EUnit test cases.

-

Erlang.mk will automatically pick up tests found in any of -the Erlang modules of your application. It will also pick up -tests located in the $(TEST_DIR) directory, which defaults -to test/.

-

It is generally a good practice to hide test code from -the code you ship to production. With Erlang.mk, you can -do this thanks to the TEST macro. It is only defined -when running tests:

-
-
-
-ifdef(TEST).
-
-%% Insert tests here.
-
--endif.
-

Be careful, however, if you include the EUnit header file, -as it also defines the TEST macro. Make sure to only include -it inside an ifdef block, otherwise tests will always be -compiled.

-
-
-
-ifdef(TEST).
-
--include_lib(\"eunit/include/eunit.hrl\").
-
-%% Insert tests here.
-
--endif.
-

Erlang.mk will automatically recompile your code when you -perform a normal build after running tests, and vice versa.

-
-
-
-

Configuration

-
-

The EUNIT_OPTS variable allows you to specify additional -EUnit options. Options are documented in the -EUnit manual. -At the time of writing, the only available option is verbose:

-
-
-

The EUNIT_ERL_OPTS variable allows you to specify options -to be passed to erl when running EUnit tests. For example, -you can load the vm.args and sys.config files:

-
-
-
-
-
-

Usage

-
-

To run all tests (including EUnit):

-
-
-
$ make tests
-

To run all tests and static checks (including EUnit):

-
-
-
$ make check
-

You can also run EUnit separately:

-
-
-
$ make eunit
-

EUnit will be quiet by default, only outputting errors. -You can easily make it verbose for a single invocation:

-
-
-
$ make eunit EUNIT_OPTS=verbose
-

Erlang.mk allows you to run all tests from a specific -module, or a specific test case from that module, using -the variable t.

-

For example, to run all tests from the cow_http_hd -module (instead of all tests from the entire project), -one could write:

-
-
-
$ make eunit t=cow_http_hd
-

Similarly, to run a specific test case:

-
-
-
$ make eunit t=cow_http_hd:parse_accept_test_
-

To do the same against a multi-application repository, -you can use the -C option:

-
-
-
$ make -C apps/my_app eunit t=my_module:hello_test
-

Note that this also applies to dependencies. From Cowboy, -you can run the following directly:

-
-
-
$ make -C deps/cowlib eunit t=cow_http_hd
-

Finally, code coverage is available, -but covered in its own chapter.

-
-
+

EUnit is the tool of choice for unit testing. Erlang.mk +automates a few things on top of EUnit, including the +discovery and running of unit tests.

+
+

Writing tests

+
+

The EUnit user guide +is the best place to learn how to write tests. Of note is +that all functions ending with _test or _test_ will be +picked up as EUnit test cases.

+

Erlang.mk will automatically pick up tests found in any of +the Erlang modules of your application. It will also pick up +tests located in the $(TEST_DIR) directory, which defaults +to test/.

+

It is generally a good practice to hide test code from +the code you ship to production. With Erlang.mk, you can +do this thanks to the TEST macro. It is only defined +when running tests:

+
+
+
-ifdef(TEST).
+
+%% Insert tests here.
+
+-endif.
+

Be careful, however, if you include the EUnit header file, +as it also defines the TEST macro. Make sure to only include +it inside an ifdef block, otherwise tests will always be +compiled.

+
+
+
-ifdef(TEST).
+
+-include_lib(\"eunit/include/eunit.hrl\").
+
+%% Insert tests here.
+
+-endif.
+

Erlang.mk will automatically recompile your code when you +perform a normal build after running tests, and vice versa.

+
+
+
+

Configuration

+
+

The EUNIT_OPTS variable allows you to specify additional +EUnit options. Options are documented in the +EUnit manual. +At the time of writing, the only available option is verbose:

+
+
+
EUNIT_OPTS = verbose
+

The EUNIT_ERL_OPTS variable allows you to specify options +to be passed to erl when running EUnit tests. For example, +you can load the vm.args and sys.config files:

+
+
+
EUNIT_ERL_OPTS = -args_file rel/vm.args -config rel/sys.config
+
+
+
+

Usage

+
+

To run all tests (including EUnit):

+
+
+
$ make tests
+

To run all tests and static checks (including EUnit):

+
+
+
$ make check
+

You can also run EUnit separately:

+
+
+
$ make eunit
+

EUnit will be quiet by default, only outputting errors. +You can easily make it verbose for a single invocation:

+
+
+
$ make eunit EUNIT_OPTS=verbose
+

Erlang.mk allows you to run all tests from a specific +module, or a specific test case from that module, using +the variable t.

+

For example, to run all tests from the cow_http_hd +module (instead of all tests from the entire project), +one could write:

+
+
+
$ make eunit t=cow_http_hd
+

Similarly, to run a specific test case:

+
+
+
$ make eunit t=cow_http_hd:parse_accept_test_
+

To do the same against a multi-application repository, +you can use the -C option:

+
+
+
$ make -C apps/my_app eunit t=my_module:hello_test
+

Note that this also applies to dependencies. From Cowboy, +you can run the following directly:

+
+
+
$ make -C deps/cowlib eunit t=cow_http_hd
+

Finally, code coverage is available, +but covered in its own chapter.

+
+
+ + +