FREEDOM251

Freedom251 › Unit Testing Frameworks

ExUnit

Free plan Linux

Visit ExUnit Alternatives Pricing

ExUnit's own site

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

PlanBilled and limitsPrice
ExUnitUnit testing framework for ElixirFree

As hexdocs.pm lists them, read 8 Oct 2026. The maker's own page has the final word.

Getting started

  1. Use an Elixir environment and create test files in the project's test directory.
  2. Start the framework with `ExUnit.start()`.
  3. Define test cases in a module using `ExUnit.Case`.
  4. Name test files to match `*_test.exs`.
  5. 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

Look at these too