AceUnit

C89 · C90 · C99 · C11 · C17 · C23 — hosted & freestanding

Your test functions are already named.
AceUnit just reads them.

No annotations, no registration macros. AceUnit inspects the compiled symbol table and runs whatever it finds named test*, beforeEach,afterAll, and friends.

Characteristics

SymParameterDescription
DISCTest discoverySymbol table read via nm, objdump, or readelf. No annotations, no registration macros.
STDLanguage standardsC89/C90 through C23 — same framework, same discovery mechanism.
RUNRunnersSimple, SetJmp, Abort, Fork — pick the failure model your environment supports.
ENVEnvironmentsHosted and freestanding — from a workstation down to an 8-bit microcontroller.
MOCKMocking strategiesFive approaches for untestable code: objcopy, ld --wrap, macros, interposer, stdout capture.
TCToolchainsGCC, Clang, plus commercial embedded compilers — Keil, Samsung ucc, Open64.

Quick start

git clone https://github.com/christianhujer/aceunit.git
cd aceunit
make && sudo make install

Full prerequisites and platform notes: Installation.

AceUnit also works as a vehicle to study or teach Test-Driven Development in C — small enough to read end to end, real enough to run in production.