Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cpprunner

Hexagonal Test Framework

About/À propos ?

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.

Architecture

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.

Structure

- 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.

Usage

  1. Build/Compiler the/le runner:
./builder.sh
# select/choisir b
  1. Run/Exécuter the/les tests:
./builder.sh
# select/choisir t
# select/choisir c
# select/choisir r
  1. 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 >

Compatibility/Compatibilité

Currently tested only on Linux x86_64 Debian.

Actuellement testé uniquement sur Linux x86_64 Debian.

License

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.

Releases

Contributors

Languages