The fastest feature-rich C++11/14/17/20 single-header testing framework for unit tests and TDD
Usage
Make sure to add the stable cppget.org repositories to your project's repositories.manifest to be able to fetch the packages.
:
role: prerequisite
location: https://pkg.cppget.org/1/stable
# trust: ...
Add the respective dependency in your project's manifest file to make the package available for import.
depends: doctest ^ 2.4.10
The header-only C++ library to use doctest as your unit testing framework can be imported by the following declaration in a buildfile.
import doctest = doctest%lib{doctest}
Reviews
Builds
| toolchain |
public-0.18.1 |
| target |
x86_64-apple-darwin23.5.0 |
| tgt config |
macos_14-gcc_14_homebrew-static_O3 |
| timestamp |
2026-06-13 02:21:36 UTC (13:36:49 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-apple-darwin23.5.0 |
| tgt config |
macos_14-gcc_14_homebrew-O3 |
| timestamp |
2026-06-13 02:20:00 UTC (13:38:26 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-apple-darwin23.5.0 |
| tgt config |
macos_14-gcc_14_homebrew |
| timestamp |
2026-06-13 02:19:00 UTC (13:39:25 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-apple-darwin23.5.0 |
| tgt config |
macos_14-clang_15.0-static_O3 |
| timestamp |
2026-06-12 22:36:40 UTC (17:21:46 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-apple-darwin23.5.0 |
| tgt config |
macos_14-clang_15.0-O3 |
| timestamp |
2026-06-12 22:35:42 UTC (17:22:44 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-apple-darwin23.5.0 |
| tgt config |
macos_14-clang_15.0 |
| timestamp |
2026-06-12 22:33:46 UTC (17:24:39 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-gcc_14-static_O3 |
| timestamp |
2026-06-12 21:15:53 UTC (18:42:33 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-gcc_14-ndebug_O3 |
| timestamp |
2026-06-12 21:15:17 UTC (18:43:09 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-gcc_14-O3 |
| timestamp |
2026-06-12 21:15:03 UTC (18:43:22 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-gcc_14 |
| timestamp |
2026-06-12 21:13:18 UTC (18:45:08 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-clang_22_libc++-static_O3 |
| timestamp |
2026-06-12 21:12:33 UTC (18:45:52 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-clang_22_libc++-O3 |
| timestamp |
2026-06-12 21:12:30 UTC (18:45:56 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-clang_22_libc++ |
| timestamp |
2026-06-12 21:11:39 UTC (18:46:46 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-clang_18_libc++-O3 |
| timestamp |
2026-06-12 20:42:58 UTC (19:15:28 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-clang_18_libc++-static_O3 |
| timestamp |
2026-06-12 20:42:26 UTC (19:15:59 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-clang_18_libc++ |
| timestamp |
2026-06-12 20:42:04 UTC (19:16:21 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-clang_18-static_O3 |
| timestamp |
2026-06-12 20:41:40 UTC (19:16:46 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-clang_18-O3 |
| timestamp |
2026-06-12 20:41:18 UTC (19:17:08 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-clang_18 |
| timestamp |
2026-06-12 20:40:50 UTC (19:17:36 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_fedora_43-gcc_15-bindist |
| timestamp |
2026-06-12 18:56:54 UTC (21:01:32 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-gcc_16-static_O3 |
| timestamp |
2026-06-12 18:55:30 UTC (21:02:55 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-gcc_16-ndebug_O3 |
| timestamp |
2026-06-12 18:54:46 UTC (21:03:39 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-gcc_16-O3 |
| timestamp |
2026-06-12 18:54:39 UTC (21:03:47 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-gcc_16 |
| timestamp |
2026-06-12 18:54:34 UTC (21:03:51 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-apple-darwin22.5.0 |
| tgt config |
macos_13-clang_15.0 |
| timestamp |
2026-06-12 18:14:53 UTC (21:43:33 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_ubuntu_24.04-gcc_13-bindist |
| timestamp |
2026-06-12 17:52:23 UTC (22:06:03 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-gcc_14-bindist |
| timestamp |
2026-06-12 17:51:36 UTC (22:06:50 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-freebsd15.0 |
| tgt config |
freebsd_15-clang_19-static_O3 |
| timestamp |
2026-06-12 17:36:38 UTC (22:21:48 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-freebsd15.0 |
| tgt config |
freebsd_15-clang_19-O3 |
| timestamp |
2026-06-12 17:36:26 UTC (22:22:00 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-gcc_15-O3 |
| timestamp |
2026-06-12 17:36:10 UTC (22:22:16 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-freebsd15.0 |
| tgt config |
freebsd_15-clang_19 |
| timestamp |
2026-06-12 17:35:55 UTC (22:22:30 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-gcc_15 |
| timestamp |
2026-06-12 17:35:46 UTC (22:22:40 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-clang_21_libc++ |
| timestamp |
2026-06-12 17:35:27 UTC (22:22:59 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-freebsd14.1 |
| tgt config |
freebsd_14-clang_18 |
| timestamp |
2026-06-12 17:34:43 UTC (22:23:43 hours ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-clang_22-static_O3 |
| timestamp |
2026-06-12 14:36:18 UTC (01 01:22:07 days ago) |
| result |
warning (update) | warning (test-installed) | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-clang_22 |
| timestamp |
2026-06-12 14:35:46 UTC (01 01:22:39 days ago) |
| result |
warning (update) | warning (test-installed) | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-clang_22-O3 |
| timestamp |
2026-06-12 14:35:34 UTC (01 01:22:52 days ago) |
| result |
warning (update) | warning (test-installed) | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
aarch64-linux-gnu |
| tgt config |
linux_debian_12-gcc_13 |
| timestamp |
2026-06-12 13:42:21 UTC (01 02:16:05 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_debian_13-clang_21 |
| timestamp |
2026-06-12 12:40:14 UTC (01 03:18:12 days ago) |
| result |
warning (update) | warning (test-installed) | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-microsoft-win32-msvc14.5 |
| tgt config |
windows_10-clang_21_msvc_18-static_O2 |
| timestamp |
2026-06-07 13:08:22 UTC (06 02:50:04 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-microsoft-win32-msvc14.5 |
| tgt config |
windows_10-clang_21_msvc_18-O2 |
| timestamp |
2026-06-07 13:08:03 UTC (06 02:50:23 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-microsoft-win32-msvc14.5 |
| tgt config |
windows_10-clang_21_msvc_18 |
| timestamp |
2026-06-07 13:07:58 UTC (06 02:50:28 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-microsoft-win32-msvc14.5 |
| tgt config |
windows_10-msvc_18-static_O2 |
| timestamp |
2026-06-07 10:44:48 UTC (06 05:13:37 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-microsoft-win32-msvc14.5 |
| tgt config |
windows_10-msvc_18-O2 |
| timestamp |
2026-06-07 10:44:06 UTC (06 05:14:20 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-microsoft-win32-msvc14.5 |
| tgt config |
windows_10-msvc_18 |
| timestamp |
2026-06-07 10:44:01 UTC (06 05:14:24 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-microsoft-win32-msvc14.3 |
| tgt config |
windows_10-msvc_17 |
| timestamp |
2026-06-07 10:20:03 UTC (06 05:38:23 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-w64-mingw32 |
| tgt config |
windows_10-gcc_15.2_mingw_w64-static_O2 |
| timestamp |
2026-06-05 13:06:31 UTC (08 02:51:54 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-w64-mingw32 |
| tgt config |
windows_10-gcc_15.2_mingw_w64-O2 |
| timestamp |
2026-06-05 13:06:31 UTC (08 02:51:54 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-w64-mingw32 |
| tgt config |
windows_10-gcc_15.2_mingw_w64 |
| timestamp |
2026-06-05 13:04:58 UTC (08 02:53:28 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_ubuntu_26.04-gcc_15-bindist |
| timestamp |
2026-06-05 12:08:13 UTC (08 03:50:13 days ago) |
| result |
success | log | rebuild |
| toolchain |
public-0.18.1 |
| target |
x86_64-linux-gnu |
| tgt config |
linux_fedora_44-gcc_16-bindist |
| timestamp |
2026-06-01 11:47:00 UTC (12 04:11:26 days ago) |
| result |
success | log | rebuild |
Changes
Change Log
Full Changelog
v2.4.9 (2022-06-18)
Full Changelog
Closed issues:
- Visual Studio's Test Explorer and Resharper C++'s Unit Test Explorer don't see Doctest's tests #661 (KulaGGin)
- How to get detailed information about testcases failing due to thrown exceptions? #660 (NiklasKappel)
- Add clang-tidy integration and fix all warnings #659 (Saalvage)
- Avoid static init problem in insufficient_procs() (MPI) #657 (starintheuniverse)
- Use MPI_Isend in MpiConsoleReporter to avoid deadlock #656 (starintheuniverse)
- Deadlock in MpiConsoleReporter when root rank fails assert #655 (starintheuniverse)
- Cleanup of DOCTEST_DO_BINARY_EXPRESSION_COMPARISON. Fixes #651 #652 (iboB)
- Comparison with implicit cast from non-const value can't be decomposed #651 (iboB)
- Local structured bindings cannot be used in CHECK macros (since 2.4.8) #647 (pragmaxwell)
- Add tests for DOCTEST_CONFIG_USE_STD_HEADERS #643 (Saalvage)
- Stringification amendments #642 (Saalvage)
- Clean up defines a bit; Implement #439 #641 (Saalvage)
- Fix #508 #640 (Saalvage)
- Fix #508 #639 (Saalvage)
- New doctest version gives me an error: reference to local binding '...' declared in enclosing function 'DOCTEST_ANON_FUNC_16' #638 (a4z)
- The tutorial example does not work (linker errors) with clang 10 #637 (sixcy)
- Implementing `DOCTEST_ASSERT_IMPLEMENT_1` as lambda prevents testing structured bindings #636 (ChrisThrasher)
- re-re-remove overly restrictive minimum version of meson #635 (eli-schwartz)
- Fix move-only types failing to decompose correctly #634 (Saalvage)
- Weird compilation error when using CHECK_THROWS/CHECK_THROWS_AS on Visual Studio 2019 with no exceptions #633 (yeputons)
- Error triggered by comparing typeid with new doctest 2.4.8 #632 (JazzSuite)
- Improve Mac PowerPC support #631 (ryandesign)
- issue introduced in 2.4.7 #630 (onqtam)
- Decompose expressions containing the spaceship operator #629 (falbrechtskirchinger)
- added nolint for cert-err58 #628 (serguei-k)
- Fix properties not being passed in doctest_discover_tests #626 (quantumsteve)
- Config no multithreading #625 (Saalvage)
- wasm*-support? #624 (FrozenSource)
- Fix MPI extension to work with no parallel tests #623 (BerengerBerthoul)
- string comparison leads to gotting stuck #622 (laoshaw)
- doctest_discover_tests no longer sets ENVIRONMENT variables for discovered tests. #621 (quantumsteve)
- Add contains option to checks. #620 (MFraters)
- Feature request: CHECK_THROWS_WITH with contains option #619 (MFraters)
- Add alias target for doctest_with_main #617 (jessestricker)
- Allow escaping backslash with backslash in filters (#614) #616 (yeputons)
- Fix operator<< #615 (Saalvage)
- Correct minor typos #613 (utilForever)
- Fix MPI extension to work if launched without mpirun/mpiexec #612 (BerengerBerthoul)
- Fix mpi subcase #611 (BerengerBerthoul)
- compilation error with custom operator== defined in namespace #610 (zvyagin1)
- Regression: Clang-Tidy warnings in 2.4.8 #607 (nlohmann)
- Internal compiler error with GCC 7.5 #606 (foonathan)
- tagging convension has changed? #605 (kloczek)
- Update Doctest in vcpkg to 2.4.8 #604 (gc435)
- Add IsNaN operator! #603 (Saalvage)
- Ignored generated files from CMake, OSX, Xcode, and VS #602 (LeonBrands)
- Move roadmap and wipe it clean #601 (Saalvage)
- removes a duplicate word 'most' in configuration.md #599 (krishnakumarg1984)
- Fix subcase reentry #598 (Saalvage)
- Loop-generated `SUBCASE`s are not run #597 (yeputons)
- Void #596 (Saalvage)
- Add flag that forces custom stringification methods to be provided #595 (Saalvage)
- Fix coverage #594 (Saalvage)
- TEST CODECOV PR BEHAVIOR #593 (Saalvage)
- Ignore CMake and MacOS generated files #592 (LeonBrands)
- Feature request: option to disable fallback "{?}" stringifier #591 (YarikTH)
- Add tests for default stringification result of doctest #590 (YarikTH)
- Feature config ret vals #589 (Saalvage)
- DOCTEST_CONFIG_ASSERT_RETURN_VALUES #588 (Saalvage)
- Support pretty printing of container based on heuristics #587 (YarikTH)
- Refactor stringification #585 (Saalvage)
- Feature: Better NaN #584 (Saalvage)
- Nan check #582 (Saalvage)
- Update roadmap following maintainer change #581 (eyalroz)
- Regression between 2.4.6 and 2.4.7 #571 (YarikTH)
- build failure with gcc-11.2 when using user declared operator<<(ostream, vector) #551 (nlitsme)
- variable maximum is assigned 6206517616395625 instead of the actual return value which is 5.0 #530 (kk723)
- toString can call existing user-defined toString through ADL incorrectly #508 (zeux)
- [Coverity] Concurrent data access violations (MISSING_LOCK) doctest.h: 5838 in doctest::::ConsoleReporter::test_case_start(const doctest::TestCaseData &)() #486 (jiridanek)
- Provide an error message if REQUIRE (or other disabled assertion macros) are used when exceptions are disabled #439 (alexeyr)
- Conflict with templated toString function #420 (TillHeinzel)
- -tc does not work with comma in names #398 (martinus)
- Compile error on MSVC2019 with any macro which involves stringification of std::string (asserts, INFO, etc.) when isn't included #381 (nyanpasu64)
- the dll example doesn't run correctly on Windows with MinGW #375 (GregKon)
- add basic conan recipe #354 (trondhe)
- CHECK_MESSAGE() should accept temporaries #337 (eyalroz)
- stringify of cstring literals doesn't work out of the box with separate test_driver.cpp #329 (teichert)
- warning : function declared 'noreturn' should not return [-Winvalid-noreturn] #307 (Vexthil)
- Test cases containing a comma cannot be run individually #297 (Tradias)
- [bug] Can't compile the tests because of mutex, that is declared in the doctest #242 (BrunaoW)
- The `CHECK` macro conflicts with Boost.Beast (and surely others) #234 (reddwarf69)
- Feature request: check if a `float` or `double` is NaN #105 (iamthad)