CMake: 利用Catch2库进行单元测试

本文介绍了如何在CMake项目中集成流行的Catch2测试框架,通过添加单头库进行测试,演示了如何配置CMakeLists.txt和编写测试用例,以实现更复杂测试功能。

CMake: 利用Catch2库进行单元测试

导言

上一篇,使用返回码来表示test.cpp测试的成功或失败。对于简单功能没问题,但是通常情况下,我们想要使用一个测试框架,它提供了相关基础设施来运行更复杂的测试,包括固定方式进行测试,与数值公差的比较,以及在测试失败时输出更好的错误报告。本篇,通过使用目前比较流行的测试库Catch2来进行探索相关内容。这个测试框架有个很好的特性,它可以通过单个头库包含在项目中进行测试,这使得编译和更新框架特别容易。通过将CMakeCatch2结合使用,来测试上一篇求和代码。

项目结构

NOTE
本项目中Catch使用的版本是2.0.1,目前已经更新到3.4.0。关于最新版本的使用我们将在本系列最后开启一个具体的小型项目探索测试框架。

.
├── catch.hpp
├── CMakeLists.txt
├── main.cpp
├── sum_integers.cpp
├── sum_integers.h
└── test.cpp

项目地址:

https://gitee.com/jiangli01/tutorials/tree/master/cmake-tutorial/chapter4/02

CMakeLists.txt

# set minimum cmake version
cmake_minimum_required(VERSION 3.10 FATAL_ERROR)
# project name and language
project(test_catch2 LANGUAGES CXX)

# require C++11
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# example library
add_library(sum_integers sum_integers.cpp)
# main code
add_executable(sum_up main.cpp)
target_link_libraries(sum_up sum_integers)

# testing binary
add_executable(cpp_test test.cpp)
target_link_libraries(cpp_test sum_integers)

enable_testing()
add_test(
  NAME catch_test
  COMMAND $<TARGET_FILE:cpp_test> --success
)
add_test(
  NAME catch_test
  COMMAND $<TARGET_FILE:cpp_test> --success
)

--success选项可传递给单元测试的可执行文件。这是一个Catch2选项,测试成功时,也会有输出。

相关源码

main.cppsum_integers.cppsum_integers.h与之前的示例相同。

test.cpp

#include <vector>

#include "sum_integers.h"
// this tells catch to provide a main()
// only do this in one cpp file
#define CATCH_CONFIG_MAIN
#include "catch.hpp"

TEST_CASE("Sum of integers for a short vector", "[shirt]") {
   
   
  auto integers = {
   
   1, 2, 3, 4, 5};
  REQUIRE(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值