Unit testing and mocking for c++

This page summarizes the projects mentioned and recommended in the original post on reddit.com/r/cpp

Our great sponsors
  • Scout APM - Less time debugging, more time building
  • SonarQube - Static code analysis for 29 languages.
  • SaaSHub - Software Alternatives and Reviews
  • FakeIt

    C++ mocking made easy. A simple yet very expressive, headers only library for c++ mocking.

    Coming from googletest/googlemock, I found FakeIt to be a rabbit hole. In particular, I recall not being able to match const reference parameters or something strange like that -- the matcher values would dangle I think. Ah yes, this issue here: https://github.com/eranpeer/FakeIt/issues/108.

  • gtest_sample

    A very simple project using GTest

    If you want to get started on GoogleTest fast, here’s a sample code that I made for a seminar. https://github.com/changh95/gtest_sample

  • Scout APM

    Less time debugging, more time building. Scout APM allows you to find and fix performance issues with no hassle. Now with error monitoring and external services monitoring, Scout is a developer's best friend when it comes to application development.

  • Catch

    A modern, C++-native, test framework for unit-tests, TDD and BDD - using C++14, C++17 and later (C++11 support is in v2.x branch, and C++03 on the Catch1.x branch)

    I'm answering a question asked not from me. I've used both Google.Test and Catch2 and latter one feels much nicer. Sections from Catch2 just do not exist in other frameworks however they are super powerful. It has drawbacks like not having out of the box macros for setting up stuff once for all the runs of a test before a test is run with various parameters. See https://github.com/catchorg/Catch2/issues/1602 Integrating gmock should be easy as I've seen but not flawless. As I remember some extra work needs to be done so expectations are verified at end of sections? See https://github.com/matepek/catch2-with-gmock Google.Test doesn't support (or at least didn't when I last looked) some combination of type and value generators. Other than that, the slightly uglier syntax and lack of sections (which is pretty big) it's all good. Especially with gmock all integrated and delivered to you in one package.

  • catch2-with-gmock

    Exmaple of using Catch2 with GMock

    I'm answering a question asked not from me. I've used both Google.Test and Catch2 and latter one feels much nicer. Sections from Catch2 just do not exist in other frameworks however they are super powerful. It has drawbacks like not having out of the box macros for setting up stuff once for all the runs of a test before a test is run with various parameters. See https://github.com/catchorg/Catch2/issues/1602 Integrating gmock should be easy as I've seen but not flawless. As I remember some extra work needs to be done so expectations are verified at end of sections? See https://github.com/matepek/catch2-with-gmock Google.Test doesn't support (or at least didn't when I last looked) some combination of type and value generators. Other than that, the slightly uglier syntax and lack of sections (which is pretty big) it's all good. Especially with gmock all integrated and delivered to you in one package.

  • doctest

    The fastest feature-rich C++11/14/17/20 single-header testing framework

    I usually use doctest with trompeloeil.

  • trompeloeil

    Header only C++14 mocking framework

    I usually use doctest with trompeloeil.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts