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.
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"
For all other test files, you need:
#include "ApprovalTests.hpp"
- Using Approval Tests With Catch
- Using Approval Tests With CppUTest
- Using Approval Tests With Google Tests
- Using Approval Tests With Doctest
- Using Approval Tests With Boost.Test
- Using Approval Tests With [Boost].UT
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.