unitest

Package Version Hex Docs

A Gleam test runner with random ordering, tagging, and CLI filtering. It is a drop-in replacement for gleeunit if you’re already using asserts.

Installation

gleam remove gleeunit
gleam add unitest --dev
gleam clean
  1. Open test/project_test.gleam and replace import gleeunit with import unitest and gleeunit.main() with unitest.main().

Quick Start

Create test/yourapp_test.gleam:

import unitest

pub fn main() {
  unitest.main()
}

pub fn addition_test() {
  assert 1 + 1 == 2
}

Run with gleam test.

Features

Future Work?

CLI Usage

gleam test                            # Random order
gleam test -- --seed 123              # Reproducible order
gleam test -- --module my_mod_test    # Single module
gleam test -- --test my_mod_test.fn   # Single test
gleam test -- --tag slow              # Tests with tag

Tagging Tests

Mark tests for selective execution:

import unitest

pub fn slow_test() {
  use <- unitest.tag("slow")
  // slow test code
}

pub fn integration_db_test() {
  use <- unitest.tags(["integration", "database"])
  // integration test code
}

Ignoring Tags by Default

Skip certain tags unless explicitly requested:

import unitest.{Options}

pub fn main() {
  unitest.run(Options(..unitest.default_options(), ignored_tags: ["slow"]))
}

Tests tagged “slow” will show as S (skipped). Override with gleam test -- --tag slow.

Examples

See examples/demo/ for a complete working project.

Further documentation at hexdocs.pm/unitest.

Search Document