Getting Started - Creating your main()
Introduction
This page shows how to set up the main()
for test programs that use
Approval Tests.
These steps are needed in order to teach Approval Tests how to name its output files automatically.
If, after following these steps, you need help with running your program, please see Troubleshooting.
Main File
The Basics
You need to include 2 lines for your main file to work.
For Catch2, it’s these two lines:
// main.cpp:
#define APPROVALS_CATCH // This tells Approval Tests to provide a main() - only do this in one cpp file
#include "ApprovalTests.hpp"
(See snippet source)
For all other test files, you need:
#include "ApprovalTests.hpp"
Choosing a testing framework
If you are already using one of the above testing frameworks, that is the one you should use.
If not, Approval Tests works well with all the above. Here are factors to consider.
Framework |
Min C++ |
Ease of setup |
IDE Support |
Build time |
---|---|---|---|---|
Catch2 |
C++11 |
Very easy [1], [2] |
Widely supported |
Not bad [3] |
CppUTest |
C++11 |
Difficult |
Unknown |
Very Fast |
doctest |
C++11 |
Very easy [1] |
Unknown |
Fast |
Google Test |
C++11 |
Difficult |
Very widely supported |
Fast |
Boost.Test |
C++11 |
Difficult |
Unknown |
Fast |
[Boost].UT |
C++20 [4] |
Very easy [1] |
Unknown |
Fast |
Released as a single header file
See the Starter Project
Catch2 has options to speed up its builds
[Boost].UT works with C++17, but the ApprovalTests interface to that library depends on std::source_location, which is a C++ 20 feature.