Hexagonal Test Framework
cpprunner is a dynamic C++ test framework. It compiles test campaigns into a shared library, loads them via dlopen, and executes them. Results are streamed to console and CSV.
cpprunner est un environnement de test dynamique en C++. Il compile les campagnes de test dans une bibliothèque partagée, les charge via dlopen, et les exécute. Les résultats sont affichés en console et exportés en CSV.
Hexagonal architecture isolates core logic from external concerns via ports. Adapters implement these ports.
L'architecture hexagonale isole la logique centrale des préoccupations externes via des ports. Les adaptateurs implémentent ces ports.
- Core: TestRegistry, TestCase, TestRegistrar, macros.
- Ports: ITestRunner, ITestReporter, ITestCompiler.
- Adapters: SequentialTestRunner, ConsoleReporter, CsvReporter, GccCompiler.
Core knows nothing about console output or dynamic loading. Replace adapters without touching core.
Le cœur ne sait rien de la sortie console ou du chargement dynamique. Remplacez les adaptateurs sans toucher au cœur.
- app/ - Framework source (core, ports, adapters).
- Code source du framework (core, ports, adapters)
- tester/ - Test campaigns and scenarios.
- Campagnes de test et scénarios.
- builder.sh - Builds the framework binary.
- Compile le binaire du framework.
- tester/tester.sh - Runs the test campaigns.
- Exécute les campagnes de test.- Build/Compiler the/le runner:
./builder.sh
# select/choisir b- Run/Exécuter the/les tests:
./builder.sh
# select/choisir t
# select/choisir c
# select/choisir r- Check results/Vérifier les résultats:
[b]uild [c]lean [d]ebug [t]est e[x]it > b
compiling out/linux/x86_64/gcc/release/cpprunner (release)
done: out/linux/x86_64/gcc/release/cpprunner
[b]uild [c]lean [d]ebug [t]est e[x]it > t
[r]un all [f]ailed tests [c]ompile clea[n] [e]xit > c
compiling tests...
compilation successful
[r]un all [f]ailed tests [c]ompile clea[n] [e]xit > r
[run] starting tests
[ok] unit_Test_TestCase
[ok] unit_Test_Registrar
[ok] unit_Test_Registry
[ok] unit_Test_Demo
[ok] unit_Test_ExpectFail
[fail] unit_Test_AssertFail : v != 0
[ok] integration_Test_Runner
csv updated: passed=1 failed=0
[ok] integration_Test_Reporter
[ok] integration_Test_Ports
[done] passed=8 failed=1
csv updated: passed=8 failed=1
results written to out/report_080526-135844.csv
--- CSV Report ---
test_name,result,comment
unit_Test_TestCase,pass,
unit_Test_Registrar,pass,
unit_Test_Registry,pass,
unit_Test_Demo,pass,
unit_Test_ExpectFail,pass,
unit_Test_AssertFail,fail,v != 0
integration_Test_Runner,pass,
integration_Test_Reporter,pass,
integration_Test_Ports,pass,
------------------
[r]un all [f]ailed tests [c]ompile clea[n] [e]xit >Currently tested only on Linux x86_64 Debian.
Actuellement testé uniquement sur Linux x86_64 Debian.
SPDX-License-Identifier: AGPL-3.0-or-later
Copyright (C) 2026 Alexandre Raduly alexander14k28@gmail.com
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
See LICENSE for the license governing this project.