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)
Go to file
Daniel J. Rollins 39bfc6e82b Export Catch as a CMake package and 'linkable' target
Create a namespaced Catch2::Catch target that is 'linkable' through
`target_link_libraries()` and export it so it is findable through
`find_package()`.

`find_package()` will find versions with the same major number and with
minor number >= requested.

This makes catch a lot easier to use in CMake-based projects. Whether it
is found using `find_package` or included in the client project as a
subdirectory, the client can include the catch headers per-target with
`target_include_directories(target PRIVATE Catch2::Catch).

Example usage:

    cmake_minimum_required(VERSION 3.1)

    # include Catch2 as subdirectory or installed package
    # add_subdirectory(Catch2)
    find_package(Catch2 VERSION 2.1.0 REQUIRED)

    add_executable(tests tests/catch_main.cpp)
    target_link_libraries(tests PRIVATE Catch2::Catch)
2018-02-08 12:18:42 +01:00
.github Added "How to test changes in PR" section to documentation 2017-06-22 18:56:10 +02:00
artwork Tweaked logo 2017-11-07 11:41:49 +00:00
CMake Add codecov.io coverage tracking 2017-11-27 20:13:47 +01:00
contrib Catch `catch_discover_tests` 2018-01-11 21:17:12 +01:00
docs Add Catch::is_range to documentation 2018-02-01 20:29:49 +01:00
examples Namespace Catch CMake options 2018-01-18 23:20:26 +01:00
include Enable -Wpedantic, fix unconditional use of C++14 extension 2018-02-05 10:04:59 +01:00
misc Namespace Catch CMake options 2018-01-18 23:20:26 +01:00
projects Remove unnecessary semicolons 2018-02-05 10:03:51 +01:00
scripts Add CATCH_VERSION_* defines for external use 2018-01-26 20:56:14 +01:00
single_include v2.1.1 2018-01-26 16:06:07 +01:00
test_package v2.1.1 2018-01-26 16:06:07 +01:00
third_party Embed Clara v1.1.1 2018-01-22 15:08:28 +00:00
.gitattributes Keep LICENCE.txt with LF as line endings for easy hashing 2018-01-26 16:45:32 +01:00
.gitignore Exclude benchmark dir 2018-01-05 14:39:59 +00:00
.travis.yml Namespace Catch CMake options 2018-01-18 23:20:26 +01:00
appveyor.yml Change CMake project name to 'Catch2' 2018-01-18 13:13:39 +01:00
catch.pc.in Specify VERSION in modern CMake 2018-01-18 23:20:26 +01:00
CMakeLists.txt Export Catch as a CMake package and 'linkable' target 2018-02-08 12:18:42 +01:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 2017-08-17 07:45:12 +01:00
codecov.yml Add % to codecov coverage decrease threshold 2018-01-26 15:45:31 +01:00
conanfile.py v2.1.1 2018-01-26 16:06:07 +01:00
LICENSE.txt Renamed licence file, license should now be detected by github 2017-03-20 08:59:25 +01:00
README.md v2.1.1 2018-01-26 16:06:07 +01:00

catch logo

Github Releases Build Status Build status codecov Try online

The latest version of the single header can be downloaded directly using this link

Catch2 is released!

If you've been using an earlier version of Catch, please see the Breaking Changes section of the release notes before moving to Catch2. You might also like to read this blog post for more details.

What's the Catch?

Catch2 stands for C++ Automated Test Cases in a Header and is a multi-paradigm test framework for C++. which also supports Objective-C (and maybe C). It is primarily distributed as a single header file, although certain extensions may require additional headers.

How to use it

This documentation comprises these three parts:

More