src/docs/rfcs/009-exunit.md
With the upgrade of supported Erlang version and introduction of Elixir into our integration test suite we have an opportunity to replace currently used eunit (for new tests only) with Elixir based ExUnit.
Eunit testing framework has a number of issues which makes it very hard to use. We already use alternative testing framework called ExUnit for integration tests. The proposal is to extend the use of ExUnit to CouchDB unit tests as well.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119.
The eunit testing framework is very hard to maintain. In particular, it has the following problems:
{with, Tests} doesn't detect test name correctlyExUnit shouldn't have these problems:
describe directive<app>/test/*.erl into <app>/test/eunit/*.erlmake exunit target to Makefile.credo.exs (linter configuration) into root of a project<app>/test/exunit/ directory to hold new test suitestest/elixir/libmix.exs into root of the projectThere is a possibility that we would need to modify content of test/elixir/lib
to have similar experience in both integration and unit test framework.
N/A
N/A
Production code is not updated. Therefore there is no security risk.
Thanks to everyone who participated on the mailing list discussion