Welcome to Erbsland Unit Test — a lightweight and modern unit testing framework designed specifically for C++20 and beyond. Originally created for testing Erbsland libraries and applications, this system is tailored to be practically dependency-free, offering developers a clean and minimalistic testing environment.
Compatible with any C++20-compliant compiler, this framework is perfect for those who value simplicity and control in their testing workflows.
Although no external build tools are strictly required, we recommend using CMake and Python for a more streamlined experience, especially when working with metadata.
If you're new here, the best place to begin is the step-by-step Getting Started Guide. It walks you through everything you need to write and run your first unit test:
Or jump straight into the code with our hands-on example project, which showcases the suggested project layout and core testing features:
The full documentation provides comprehensive coverage on setting up your environment, writing unit tests, configuring metadata, and more:
To build and use the framework, make sure your environment meets the following criteria:
- A C++ compiler with full C++20 support.
- A standard library implementation compatible with C++20.
- CMake version 3.25 or newer.
- Python 3.11 or newer (used for metadata compilation).
Our design philosophy emphasizes:
- Dependency-Free — no third-party libraries required.
- User-Friendly — intuitive syntax and setup.
- Minimalistic — only the essentials, nothing more.
- Modern — aligned with current and upcoming C++ standards.
- Secure — tested and built with safety in mind.
Found a bug? Have a feature in mind? We value community input and encourage you to contribute via our GitHub issue tracker:
Copyright © 2025 Tobias Erbsland and EducateIT GmbH
This project is licensed under the GNU Lesser General Public License v3.0 or later (LGPL-3.0-or-later). See the file COPYRIGHT.md
for details.
This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY — without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Learn more at: https://www.gnu.org/licenses/