Freedom251 › Unit Testing Frameworks
ExUnit

What ExUnit is
ExUnit is a free unit testing framework for Elixir. A basic setup starts it with ExUnit.start() and defines test cases in a module using ExUnit.Case. In a project, Mix's mix test command runs files matching *_test.exs in the test directory. ExUnit.Assertions provides macros for checks that produce error messages when assertions fail. Tests in separate modules can run concurrently, while cases within a module run serially. ExUnit.async_run/0 can begin testing as test cases load, and await_run/1 waits for the result. Result formatters report outcomes and can show timing for the slowest tests or modules. Configuration options include timeouts, parallel-case limits, failure limits, filters, captured logging, colors, and random seeds. Finished tests can pass, fail, be skipped, be excluded, or be invalid if setup_all fails. ExUnit can start tests and run them automatically before the virtual machine terminates. It is part of Elixir, supports Elixir, and its source code is released under the Apache License 2.0. The listed plan costs nothing.
Who it suits
ExUnit suits Elixir developers who want unit tests integrated with a project's Mix workflow. Its module-level concurrency and configurable reporting options can fit projects with varied testing needs.
What it does well
- Free.
- Mix runs matching test files from the test directory.
- Separate test modules can run concurrently.
- Formatters can report slow tests and modules.
- Configuration includes filters and timeouts.
What to know first
- Tests within each module run serially.
- The framework supports Elixir.
Plans
| Plan | Billed and limits | Price |
|---|---|---|
| ExUnit | Unit testing framework for Elixir | Free |
As hexdocs.pm lists them, read 8 Oct 2026. The maker's own page has the final word.
Getting started
- Use an Elixir environment and create test files in the project's test directory.
- Start the framework with `ExUnit.start()`.
- Define test cases in a module using `ExUnit.Case`.
- Name test files to match `*_test.exs`.
- Run the tests with `mix test`.
Verdict
ExUnit provides a free testing framework with Mix integration, assertions, configurable reporting, and concurrency across modules. Test cases within a module run in sequence.
Questions
Is ExUnit free?
Yes. Its listed plan is free.
Which language does ExUnit support?
ExUnit supports Elixir and is part of the Elixir programming language.
How do I run ExUnit tests?
In a project, `mix test` runs files matching `*_test.exs` in the test directory.
Can ExUnit run tests in parallel?
Tests in different modules can run concurrently. Tests within the same module run serially.
Is ExUnit open source?
Its source code is released under the Apache License 2.0.
Which platforms are listed for ExUnit?
Linux is the listed platform.
Facts from ExUnit's own pages
- Assertions
- ExUnit.Assertions provides macros that generate assertions with appropriate error messages. · ex-unit.hexdocs.pm, 8 Oct 2026
- Async execution
- ExUnit.async_run/0 starts tests asynchronously while test cases are loading, and await_run/1 waits for the result. · ex-unit.hexdocs.pm, 8 Oct 2026
- Concurrency
- Tests in different modules can run concurrently, while tests within each module run serially. · ex-unit.hexdocs.pm, 8 Oct 2026
- Configuration
- ExUnit options include test timeouts, maximum parallel cases, failure limits, filters, logging capture, colors, and random seeds. · ex-unit.hexdocs.pm, 8 Oct 2026
- Founded
- 2012 · hexdocs.pm, 28 Sept 2026
- Intended users
- The Elixir website describes Elixir as serving solo developers and Fortune 500 companies across varied industries and applications. · elixir-lang.org, 8 Oct 2026
- License
- The Elixir source code is released under the Apache License 2.0. · github.com, 8 Oct 2026
- Mix integration
- The Mix command mix test runs files matching *_test.exs in a project's test directory. · ex-unit.hexdocs.pm, 8 Oct 2026
- Parallel tests
- Tests in different test modules can run concurrently, while tests within a module run serially. · ex-unit.hexdocs.pm, 8 Oct 2026
- Purpose
- ExUnit is a unit testing framework for Elixir. · ex-unit.hexdocs.pm, 8 Oct 2026
- Reporting
- ExUnit supports result formatters and can report timing for the slowest tests or test modules. · ex-unit.hexdocs.pm, 8 Oct 2026
- Run tests
- Mix's mix test command runs files matching *_test.exs in a project's test directory. · ex-unit.hexdocs.pm, 8 Oct 2026
- Security reporting
- The Elixir repository asks users to disclose security vulnerabilities privately through its Security page. · github.com, 8 Oct 2026
- Support channels
- The Elixir website lists community support channels including Slack, the Elixir Forum, and Discord. · elixir-lang.org, 8 Oct 2026
- Supported runtime
- ExUnit is part of the Elixir programming language and the example invokes it using the elixir command line. · ex-unit.hexdocs.pm, 8 Oct 2026
- Test assertions
- ExUnit.Assertions provides macros that generate assertions with appropriate error messages. · ex-unit.hexdocs.pm, 8 Oct 2026
- Test execution
- ExUnit starts tests and can run them automatically before the VM terminates. · ex-unit.hexdocs.pm, 8 Oct 2026
- Test outcomes
- Finished tests can pass, fail, be skipped, be excluded, or be invalid when setup_all fails. · ex-unit.hexdocs.pm, 8 Oct 2026
- Test setup
- A basic ExUnit setup starts the framework with ExUnit.start() and defines tests in a module using ExUnit.Case. · ex-unit.hexdocs.pm, 8 Oct 2026
- What it does
- ExUnit is a unit testing framework for Elixir. · ex-unit.hexdocs.pm, 8 Oct 2026
Where ExUnit stands on Freedom251
- Unit Testing Frameworks#9 of 32
- Unit Testing#11 of 32
