# `eunit`
[🔗](https://github.com/erlang/otp/blob/OTP-28.5/lib/eunit/src/eunit.erl#L38)

This module is the main EUnit user interface.

# `start`

```elixir
-spec start() -> term().
```

Starts the EUnit server. Normally, you don't need to call this function; it is
started automatically.

# `stop`

```elixir
-spec stop() -> term().
```

Stops the EUnit server. Normally, you don't need to call this function.

# `test`

```elixir
-spec test(Tests :: term()) -> ok | {error, term()} | error.
```

# `test`

```elixir
-spec test(Tests :: term(), Options :: [term()]) -> ok | error | {error, term()}.
```

Runs a set of tests. The format of `Tests` is described in the section
[EUnit test representation](chapter.md#EUnit_test_representation) of the
overview.

Example:

```text
  eunit:test(fred)
```

runs all tests in the module `fred` and also any tests in the module
`fred_tests`, if that module exists.

Options:

- **`verbose`** - Displays more details about the running tests.

- **`print_depth`** - Maximum depth to which terms are printed in case of error.

- **`exact_execution`** - If this boolean flag is set to `true` framework will
  not automatically execute tests found in related module suffixed with
  "\_tests". This behaviour might be unwanted if execution of modules found in a
  folder is ordered while it contains both source and test modules.

- **`scale_timeouts`** - If this numeric value is set, timeouts will get scaled
  accordingly. It may be useful when running a set of tests on a slower host.
  Examples: `{scale_timeouts,10}` make the timeouts 10 times longer, while
  `{scale_timeouts,0.1}` would shorten them by a factor of 10.

Options in the environment variable EUNIT are also included last in the option
list, i.e., have lower precedence than those in `Options`.

_See also: _`test/1`.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
