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

Catch2 logo

Github Releases Build Status Build Status Code Coverage Try online Join the chat in Discord: https://discord.gg/4CWS9zD

Catch2 v3 is being developed!

You are on the devel branch, where the next major version, v3, of Catch2 is being developed. As it is a significant rework, you will find that parts of this documentation are likely still stuck on v2.

For stable (and documentation-matching) version of Catch2, go to the v2.x branch.

For migrating from the v2 releases to v3, you should look at our documentation. It provides a simple guidelines on getting started, and collects most common migration problems.

What's the Catch2?

Catch2 is mainly a unit testing framework for C++, but it also provides basic micro-benchmarking features, and simple BDD macros.

Catch2's main advantage is that using it is both simple and natural. Tests autoregister themselves and do not have to be named with valid identifiers, assertions look like normal C++ code, and sections provide a nice way to share set-up and tear-down code in tests.

How to use it

This documentation comprises these three parts:

More

Owner
Catch Org
Organisation account for Catch repositories
Catch Org
Comments
  • CATCH needs a more searchable name

    CATCH needs a more searchable name

    This is not the first time I run into this and I always just shrugged it off before, but after completely failing to find anything about the issue I was interested in (whether anybody has already done something to help with migrating the existing tests using CppUnit to CATCH) I have to say that this is a real problem: it's just impossible to find anything about CATCH using web search.

    It needs to use some unique name or at least not a word so prevalent when speaking about unit testing in C++ (because I'm not interested in finding about how to catch exceptions in CppUnit, damn it).

    It can be anything you like, I don't know if you prefer obvious but dull names (CppCatch, CatchUTF, ...), some other abbreviation (C++ Automated Tests Now Are Possible) or stupid puns (Notry, Dogch, ...) or hopefully something better I can't find, but it needs to be something you could enter into your search engine and actually find something related to CATCH.

  • Never-ending loop wjhen the test case Failed

    Never-ending loop wjhen the test case Failed

    If I use this piece of code:

    #define CATCH_CONFIG_MAIN
    #include "catch.hpp"
    
    #include "TCACAVAUtilities.h"
    
    TEST_CASE( "TCACAVAUtilities::CreateColorFromRGB", "[CreateColorFromRGB]" ) {
        REQUIRE( TCACAVAUtilities::CreateColorFromRGB(0, 0, 0) == 255 );
    }
    

    The result is:

    C:\SourceCode\CVS_ROOT\CAVA\develop_clean\win_b64\code\bin>TCACAVACreateBaseCatalog.exe
    All tests passed (1 assertion in 1 test case)
    

    But If I use this code:

    #define CATCH_CONFIG_MAIN
    #include "catch.hpp"
    
    #include "TCACAVAUtilities.h"
    
    TEST_CASE( "TCACAVAUtilities::CreateColorFromRGB", "[CreateColorFromRGB]" ) {
        REQUIRE( TCACAVAUtilities::CreateColorFromRGB(1, 0, 0) == 255 );
        REQUIRE( TCACAVAUtilities::CreateColorFromRGB(0, 0, 0) == 255 );
    }
    

    The result is:

    -------------------------------------------------------------------------------
    TCACAVAUtilities::CreateColorFromRGB
    -------------------------------------------------------------------------------
    C:\SourceCode\CVS_ROOT\CAVA\develop_clean\TCACAVACatalog\TCACAVACreateBaseCatalo
    g.m\src\TCACAVACreateBaseCatalog.cpp(6)
    ...............................................................................
    
    C:\SourceCode\CVS_ROOT\CAVA\develop_clean\TCACAVACatalog\TCACAVACreateBaseCatalo
    g.m\src\TCACAVACreateBaseCatalog.cpp(7): FAILED:
      REQUIRE( TCACAVAUtilities::CreateColorFromRGB(1, 0, 0) == 255 )
    with expansion:
      0x10000ff == 255
    
    -------------------------------------------------------------------------------
    TCACAVAUtilities::CreateColorFromRGB
    -------------------------------------------------------------------------------
    C:\SourceCode\CVS_ROOT\CAVA\develop_clean\TCACAVACatalog\TCACAVACreateBaseCatalo
    g.m\src\TCACAVACreateBaseCatalog.cpp(6)
    ...............................................................................
    
    C:\SourceCode\CVS_ROOT\CAVA\develop_clean\TCACAVACatalog\TCACAVACreateBaseCatalo
    g.m\src\TCACAVACreateBaseCatalog.cpp(7): FAILED:
      REQUIRE( TCACAVAUtilities::CreateColorFromRGB(1, 0, 0) == 255 )
    with expansion:
      0x10000ff == 255
    
    -------------------------------------------------------------------------------
    TCACAVAUtilities::CreateColorFromRGB
    -------------------------------------------------------------------------------
    C:\SourceCode\CVS_ROOT\CAVA\develop_clean\TCACAVACatalog\TCACAVACreateBaseCatalo
    g.m\src\TCACAVACreateBaseCatalog.cpp(6)
    ...............................................................................
    
    C:\SourceCode\CVS_ROOT\CAVA\develop_clean\TCACAVACatalog\TCACAVACreateBaseCatalo
    g.m\src\TCACAVACreateBaseCatalog.cpp(7): FAILED:
      REQUIRE( TCACAVAUtilities::CreateColorFromRGB(1, 0, 0) == 255 )
    with expansion:
      0x10000ff == 255
    
    -------------------------------------------------------------------------------
    TCACAVAUtilities::CreateColorFromRGB
    -------------------------------------------------------------------------------
    C:\SourceCode\CVS_ROOT\CAVA\develop_clean\TCACAVACatalog\TCACAVACreateBaseCatalo
    g.m\src\TCACAVACreateBaseCatalog.cpp(6)
    ...............................................................................
    
    C:\SourceCode\CVS_ROOT\CAVA\develop_clean\TCACAVACatalog\TCACAVACreateBaseCatalo
    g.m\src\TCACAVACreateBaseCatalog.cpp(7): FAILED:
      REQUIRE( TCACAVAUtilities::CreateColorFromRGB(1, 0, 0) == 255 )
    with expansion:
      0x10000ff == 255
    
    -------------------------------------------------------------------------------
    TCACAVAUtilities::CreateColorFromRGB
    -------------------------------------------------------------------------------
    C:\SourceCode\CVS_ROOT\CAVA\develop_clean\TCACAVACatalog\TCACAVACreateBaseCatalo
    g.m\src\TCACforrtl: error (200): program aborting due to control-C event
    Image              PC                Routine            Line        Source
    
    libifcoremd.dll    00000000100BAB14  Unknown               Unknown  Unknown
    libifcoremd.dll    00000000100B46B9  Unknown               Unknown  Unknown
    libifcoremd.dll    00000000100A1017  Unknown               Unknown  Unknown
    libifcoremd.dll    0000000010021BF8  Unknown               Unknown  Unknown
    libifcoremd.dll    000000001002DDC8  Unknown               Unknown  Unknown
    kernel32.dll       00000000774F4803  Unknown               Unknown  Unknown
    kernel32.dll       00000000774B652D  Unknown               Unknown  Unknown
    ntdll.dll          00000000776EC541  Unknown               Unknown  Unknown
    

    The never-ending loop which should I stop with CTRL+C.

    Where is the problem ? Do I something wrong ?

  • Xcode/XCTest Runner Integration

    Xcode/XCTest Runner Integration

    This patch adds support for XCTest integration by inverting the usual Catch behavior; rather than using Catch as the test runner, we dynamically register XCTestCase classes with the Objective-C runtime to allow Xcode's test runner to execute (and report on) Catch-defined test cases.

    To use this implementation, a project need only include "XCTestRunner.mm" in their unit test build -- the +[XCTestCaseCatchRegistry load] method will insert an XCTestRegistryHub instance that automatically registers XCTestCase classes for any Catch test cases defined within the image.

    +load methods by definition will run prior to C++ static initializers in the same image, ensuring that we insert our registry prior to any TestCase instances registering themselves.

    Currently, our granularity is limited to test cases -- we can't report on section execution without first registering the section as a test instance in the XCTestCase, and this would require static access to the list of sections/subsections defined within a TestCase or Section.

    This approach is based on the XCTest registration code I wrote for XSmallTest: https://github.com/landonf/XSmallTest

  • Add Catch::toString support for containers

    Add Catch::toString support for containers

    In order to enhance REQUIRE and CHECK error message when testing standard containers, add overloads of Catch::toString for:

    • std::pair
    • ~~std::deque~~
    • ~~std::list~~
    • ~~std::array (c++11)~~
    • ~~std::forward_list (c++11)~~
    • ~~(more types upcoming)~~
    • any type that has a container api (no need to add support for each container individually)

    Those types were printed as "{?}" (default toString implementation for unsupported class). This was contradictory with the documentation:

    "Most [...] std types are supported out of the box"

    when in fact only string, vector and tupple were supported.

    Detail:

    • Renamed the toStringVector.cpp test file to toStringContainers.cpp and type parametrized the vector tests to run them also for deque and list.
    • ~~The overhead of including all the standard container headers is negligable.~~ => No longer needed, types are treated as containers if they fulfill (some) of the container concept constraints.
    • Types are consider containers if they contain value_type and const_iterator members and have begin and end support (members or ADL findable) returning a const_iterator. const_iterator::operator* must also return a const value_type &
    • Beware that a trying to printing a type fulfilling those requirements but returning invalid iterators will results in undefined behaviour. In such case specialize the Catch::IsContainer trait to contain static const bool value = false in order revert to the default behaviour (printing "{?}").
  • #include <catch2/catch.hpp> vs #include

    #include vs #include "catch.hpp"

    Just wondering: It seems more ideomatic to me to include the library name as part of the include name instead of just using the header file name alone. On the other hand, for a single header library there is of course not a big need/difference for it unless the header name is likely to clash with a different file name.

    So I was wondering whether your preference of

    #include "catch.hpp"
    

    over

    #include <catch2/catch.hpp>
    

    was deliberate or more like "for historic reasons" / "didn't care".

  • Tests sorted according to random index instead of random hash

    Tests sorted according to random index instead of random hash

    Description

    Use a random number instead of a hash to sort the tests.

    Motivation

    In v2.x, test cases with names differing only in the last character are almost always run one after the other. For example, for 4 tests called "a1", "a2", "b1" and "b2", only 8 combinations out of the possible 24 were observed in 1000 runs with different seeds.

  • memory leaks detected by MSVCRT debugging facilities

    memory leaks detected by MSVCRT debugging facilities

    Extra information

    Environment: Windows 10 Compiler: Microsoft (R) Compiler Version 19.11.25547 for x64 (VS2017 15.4.4) Compiler options: -sdl -guard:cf -Zc:inline -Zc:rvalueCast -Zc:referenceBinding -Zc:strictStrings -std:c++latest Version of Catch: Current master git source

    Description

    I've just started with Catch and I created a test project following code as described in the Catch2/docs/tutorial.md. I added the #define CATCH_CONFIG_RUNNER and implemented my own wmain, basically a copy of the default. I also added the _CrtDumpMemoryLeaks() diagnostics in the end of wmain. I get the following output:

    Detected memory leaks!
    Dumping objects ->
    {223} normal block at 0x0000013DA7B8EC30, 16 bytes long.
     Data: < ZQ             > B8 5A 51 F6 F7 7F 00 00 00 00 00 00 00 00 00 00 
    Object dump complete.
    

    Is it possible this could be a false indication of memory allocated by Catch waiting to be released at program exit? If so, is it by design?

    Steps to reproduce

    Compile the source file catch_tutorial.cpp.txt

  • Build error in Visual Studio 2013

    Build error in Visual Studio 2013

    I tried to compile the following program using the single-header of the master branch.

    #define CATCH_CONFIG_MAIN
    #include "catch.hpp"
    

    In Visual Studio 2013 Preview, the first error is:

    catch.hpp(1980): error C2694: 'Catch::StreamBufBase::~StreamBufBase(void)': overriding virtual function has less restrictive exception specification than base class virtual member function 'std::basic_streambuf<char,std::char_traits<char>>::~basic_streambuf(void) throw()'
    1>          H:\petter\catch\single_include\catch.hpp(1980) : see declaration of 'Catch::StreamBufBase::~StreamBufBase'
    1>          C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\streambuf(78) : see declaration of 'std::basic_streambuf<char,std::char_traits<char>>::~basic_streambuf'
    
  • testing getting skipped

    testing getting skipped

    It seems when sections are nested within an iteration, only the first iteration gets run. I do this kind of testing a lot and it would be nice if you could have sections within iterations.

    Ideally I would like to be able to do all the permutations of three or four variables, which is currently not possible. At the moment I find myself repeating code quite a lot with testing, and I'd like to have some more functional tests.

    TEST_CASE( (char*)"Cyclohexane", (char*)"[cyclohexane],[validation]" ) 
        {
            Fluid *CHEX = get_fluid(get_Fluid_index("Cyclohexane"));
            double mm = CHEX->params.molemass;
            validator_element data[] = {
                validator_element("T",300.0,"D",9.4*mm,"P",24.173705*1e6),
                validator_element("T",300.0,"D",9.4*mm,"O",115.28612/mm),
                validator_element("T",300.0,"D",9.4*mm,"C",154.76968/mm),
                validator_element("T",300.0,"D",9.4*mm,"A",1383.3876),
                validator_element("T",500.0,"D",6.5*mm,"P",3.9246630*1e6),
                validator_element("T",500.0,"D",6.5*mm,"O",192.52079/mm),
                validator_element("T",500.0,"D",6.5*mm,"C",255.57110/mm),
                validator_element("T",500.0,"D",6.5*mm,"A",434.13058),
                validator_element("T",500.0,"D",0.7*mm,"P",1.9981172*1e6),
                validator_element("T",500.0,"D",0.7*mm,"O",191.96468/mm),
                validator_element("T",500.0,"D",0.7*mm,"C",235.52304/mm),
                validator_element("T",500.0,"D",0.7*mm,"A",155.34798),
                validator_element("T",600.0,"D",3.5*mm,"P",6.8225506*1e6),  
                validator_element("T",600.0,"D",3.5*mm,"O",232.79249/mm),
                validator_element("T",600.0,"D",3.5*mm,"C",388.55212/mm),
                validator_element("T",600.0,"D",3.5*mm,"A",150.53314),
                validator_element("T",553.6,"D",3.3*mm,"P",4.0805433*1e6),
                validator_element("T",553.6,"D",3.3*mm,"O",224.19580/mm), 
                validator_element("T",553.6,"D",3.3*mm,"C",199224.62/mm), 
                validator_element("T",553.6,"D",3.3*mm,"A",87.913862)
            };
    
            //Now actually construct the vector
            std::vector<validator_element> elements(data, data + sizeof(data) / sizeof(validator_element));     
    
            for (std::vector<validator_element>::iterator it = elements.begin(); it != elements.end(); it++)
            {
                validator_element &el = *it;
                SECTION((char*)"validate")
                {
                    double eos = PropsSI((char*)el.in5.c_str(), (char*)el.in1.c_str(), el.in2, (char*)el.in3.c_str(), el.in4, "Cyclohexane")+1000;
                    double valid = el.in6;
                    CHECK(valid == eos);
                }
            }
        }
    
  • support for multi-threaded test-cases?

    support for multi-threaded test-cases?

    Hey Phil,

    do you have plans for supporting test-cases which internally spawn several threads to check correct behavior under multi-threaded conditions? This is not about executing several test cases in parallel.

    At least the Junit reporter does not support that very well and crashes; the Console reporter doesn't seem to have that issue for the same tests (at the moment) but the absence of any sync'ing mechanisms let me worry about that this could change anytime soon...

    For me it was enough to create a ThreadSafeJunitReporter by deriving from JunitReporter and adding a mutex/lock to the method assertionEnded() just like this:

    class ThreadSafeJunitReporter : public Catch::JunitReporter {
    public:
        ThreadSafeJunitReporter(Catch::ReporterConfig const& _config) :
            Catch::JunitReporter(_config) { }
    
        static std::string getDescription() {
            return "Reports test results in an XML format that looks like Ant's junitreport target.\n"
                "\tThis reporter can be used in a multi-threaded environment";
        }
    
        virtual bool assertionEnded(Catch::AssertionStats const& assertionStats) override {
            std::lock_guard<std::mutex> lock(m_mutex);
            return Catch::JunitReporter::assertionEnded(assertionStats);
        }
    
    private:
        std::mutex m_mutex;
    };
    
    INTERNAL_CATCH_REGISTER_REPORTER("junit-thread-safe", ThreadSafeJunitReporter);
    

    And using the command line option -r junit-thread-safe to get stable test runs again.


    BTW: could you change this impl:

            void ReporterRegistry::registerReporter( std::string const& name, IReporterFactory* factory ) {
                m_factories.insert( std::make_pair( name, factory ) );
            }
    

    into this one:

            void ReporterRegistry::registerReporter( std::string const& name, IReporterFactory* factory ) {
                m_factories[name] = factory;
            }
    

    This would allow someone to replace an existing reporter with an own implementation. The insert() call above just inserts the given factory iff there is no factory with name registered yet. The operator[] call will insert or update m_factories in any case.

  • Logging macros scoped to test case instead of current scope

    Logging macros scoped to test case instead of current scope

    So I'm familiar with the INFO macro for logging. However, these logs get lost once the enclosing scope ends. I'd instead like logs to be scoped to a TEST_CASE or SECTION. I have a logging system (basically a singleton) that I can register logging sinks to. For only catch tests, I override the logger to sink all logs to INFO. My hope was, that for failed test cases, it would dump logs that occurred within its own test case across our whole code base (since they all use this logger). But this doesn't work since it's nested so deep, outside of actual test case scope (but still inside; just not explicitly).

    Is there some way I can make all logs in the code base funnel into Catch? Maybe an INFO_WITHIN_TESTCASE macro could be added or something? It would basically keep a list of all logs created, until the test case or section ends and then it is erased.

    ideas?

  • Display type name in TEMPLATE_LIST_TEST_CASE output

    Display type name in TEMPLATE_LIST_TEST_CASE output

    Description

    Currentlly, when using TEMPLATE_LIST_TEST_CASE to create a templated test case, the test output refers to each type in the list by index:

    Template test case with test types specified inside std::tuple - MyTypes - 0
    Template test case with test types specified inside std::tuple - MyTypes - 1
    Template test case with test types specified inside std::tuple - MyTypes - 2
    

    This is easy to handle when the type list contains few elements, but does not scale very well to long type lists, and requires looking at the test code to figure out which index corresponds to which type. This PR changes the output to also show the name of the type:

    Template test case with test types specified inside std::tuple - MyTypes - 0 - int
    Template test case with test types specified inside std::tuple - MyTypes - 1 - char
    Template test case with test types specified inside std::tuple - MyTypes - 2 - float
    

    This is currently done using typeid(T).name(). In libstdc++, the name returned by this function is mangled, so we also have to de-mangle it using standard compiler functions. On MSVC no de-mangling is required. I don't know about other compilers.

    There are other options available to get a human-readable name for a type, including macro tricks with __PRETTY_FUNCTION__ et al. I figured these were less portable, so shied away from them.

    GitHub Issues

    None

  • Ability to get current seed value

    Ability to get current seed value

    Description I would like to have an ability to obtain current random seed value to use in my own random numbers generation during the test. For the moment I don't see such possibility in the documentation. I see this value in Config::rngSeed(), but I don't understand how to get the current configuration while using default main.

  • Unclear how to compare generic ranges against equalitiy

    Unclear how to compare generic ranges against equalitiy

    By reading the docs as linked here:

    https://github.com/catchorg/Catch2/blob/devel/docs/matchers.md#generic-range-matchers

    I don't get what the required include is or the API to compare two generic ranges.

    I would like to compare std::span's against equality, like this:

    CHECK_THAT(std::span<char>{}, Catch::Matchers::Equals(std::span<char>{}));
    

    But this doesn't compile. Isn't this supported or do I use the wrong syntax?

  • Add support for building with Meson

    Add support for building with Meson

    The Meson[1] build system makes it easier incorporate third-party libaries into a project if they also build using Meson.

    Let's add a minimal Meson build that's compatible with the CMake build, along with a GitHub workflow to check that it builds and that at least the simplest SelfTest runs.

    The handling of catch_user_config.hpp is inspired by BUILD.bazel and doesn't attempt to support any configuratons options. Such features could be added later.

    Meson strongly discourages using wildcards to specify sources, so the source and header lists are copied from CMakeLists.txt.

    Add a new test workflow to test the Meson builds. I was unable to get these tests to pass with Ubuntu 20.04, so they use Ubuntu 22.04.

    I'm neither a CMake nor a Meson expert, but the results seem to work for me.

    [1] https://mesonbuild.com/

    Description

    GitHub Issues

  • Build Error on Cygwin

    Build Error on Cygwin

    Describe the bug A clear and concise description of what the bug is.

    I get the following error using gcc 11.3.0 on cygwin:

    /cygdrive/c/projects/clingo/third_party/catch/src/catch2/../catch2/catch_tostring.hpp:214:33: error: there are no arguments to 'strnlen' that depend on a template parameter, so a declaration of 'strnlen' must be available [-fpermissive]
      214 |                 StringRef( str, strnlen( str, SZ ) ) );
    

    What about using strnlen_s instead? The only problem I see is that additional macros would have to be defined but since the templates are fully instantiated, the required code could be moved to the source file.

    There might also be another header providing a strnlen. I could dig a little deeper if help is required.

    Platform information:

    • OS: Windows + Cygwin
    • Compiler+version: GCC v11.3.0
    • Catch version: v3.1.0
Kernel-mode C++ unit testing framework in BDD-style

There is a lack of unit testing frameworks that work in OS kernel. This library closes that gap and is targeted for windows driver developers.

Jun 11, 2022
C++ Unit Testing Easier: A Header-only C++ unit testing framework

CUTE C++ Unit Testing Easier: A Header-only C++ unit testing framework usually available as part of the Cevelop C++ IDE (http://cevelop.com) Dependenc

Aug 31, 2022
C unit tests with a small header-only library.
C unit tests with a small header-only library.

C unit tests Minimalistic unit tests in C. Uses the __attribute__((constructor)) which, as far as I know, is supported by GCC and clang. So this proba

Aug 28, 2022
Upp11 - C++11 lightweight single header unit test framework

upp11 Lightweight C++11 single header unit test framework To use framework: Copy upp11.h in you project dir. Create unit test source files or modify e

Apr 4, 2019
Various Framework to do Unit Test in C++
Various Framework to do Unit Test in C++

Unit Test in C++ There are many frameworks to performs unit test in C++, we will present the most popular ones and show how to use them. The testing f

Nov 18, 2021
TestFrame - This is a test framework that uses Raylib and ImGui together to help test and develop concepts
TestFrame - This is a test framework that uses Raylib and ImGui together to help test and develop concepts

This is a test framework that uses Raylib and ImGui together to help test and develop concepts. It is made using C++ because it uses classes for windows and views.

May 13, 2022
The C Unit Testing Library on GitHub is a library designed for easy unit testing in C

The C Unit Testing Library on GitHub is a library designed for easy unit testing in C. It was written by Brennan Hurst for the purpose of providing a J-Unit-like testing framework within C for personal projects.

Oct 11, 2021
Modern c++17 unit testing framework on Microsoft Windows, Apple macOS, Linux, iOS and android.
Modern c++17 unit testing framework on Microsoft Windows, Apple macOS, Linux, iOS and android.

tunit Modern c++17 unit testing framework on Windows, macOS, Linux, iOS and android. Continuous Integration build status Operating system Status Windo

Apr 5, 2022
A dynamic mock tool for C/C++ unit test on Linux&MacOS X86_64

lmock 接口 替换一个函数,修改机器指令,用新函数替换旧函数,支持全局函数(包括第三方和系统函数)、成员函数(包括静态和虚函数)

Sep 20, 2022
A complete unit testing framework in a header

liblittletest A complete unit testing framework in a header liblittletest is an easy to use all-in-an-header testing framework; all you have to do in

Nov 11, 2021
UT: C++20 μ(micro)/Unit Testing Framework
UT: C++20 μ(micro)/Unit Testing Framework

"If you liked it then you "should have put a"_test on it", Beyonce rule UT / μt | Motivation | Quick Start | Overview | Tutorial | Examples | User Gui

Sep 28, 2022
Harbour DB speed tests comparison

hbDBSpeedTests Harbour DB speed tests comparison - Registers Count: 821051 MySql configuration( 1 or 2 ) /data/mysql/dbstru.zip - Import structure of

Nov 18, 2021
Header only C++14 mocking framework
Header only C++14 mocking framework

Trompeloeil Get: trompe l'oeil noun (Concise Encyclopedia) Style of representation in which a painted object is intended to deceive the viewer into be

Sep 23, 2022
End to end test framework designed for Juce applications

JUCE End to End test framework What is it? This package provides a mechanism to end-to-end test a JUCE application Prerequisites CMake. Must be 3.18 o

Sep 24, 2022
Handy C++ test framework

C++ Voyager Test Framework Voyager is a simple and handy C++ Unit Test framework. It is designed to be beautiful and expressive both. Try it to feel i

Mar 16, 2022
A micro unit-testing library for C/C++

µ-test A micro unit testing framework for C/C++ to get you up and running with unit-testing ASAP (even without libc). Usage Simply include the C and h

Dec 8, 2021
📝 One of the difficult unit tester for ft_containers project
📝 One of the difficult unit tester for ft_containers project

ft_containers-unit-test About ft containers unit test is a complete testing for project of school 21/ecole 42 and allowing you test your containers: V

Oct 1, 2022
An area to test reading in ATLAS xAOD format and writing out to Parquet

xaod_to_parquet An area to test reading in ATLAS xAOD format and writing out to Parquet Getting the Code Clone the repository with the --recursive fla

Nov 19, 2021
Header-only C++11 library for property-based testing.

autocheck Header-only C++11 library for QuickCheck (and later, SmallCheck) testing. Please consult the wiki for documentation. Install conan remote ad

Apr 18, 2022