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

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

被折叠的 条评论
为什么被折叠?



