如何在构建项目时运行 BOOST 单元测试

问题描述

我正在处理一个按如下方式组织成库的 C++ 项目:

├── Lib_1
│   ├──  ...
│   └──  CMakeLists.txt
├── Lib_2
│   ├──  ...
│   └──  CMakeLists.txt
│   ...
├── Lib_N
│   ├──  ...
│   └──  CMakeLists.txt
├── Main.cpp
└── CMakeLists.txt

具有文件夹结构之外的主要可执行文件。主要的CMakeLists有以下内容:

cmake_minimum_required(VERSION 3.10)

project(MyConsoleApp VERSION 1.0)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)

add_subdirectory(Lib_1)
add_subdirectory(Lib_2)
...
add_subdirectory(Lib_N)

add_executable(${PROJECT_NAME} Main.cpp)

target_link_libraries(${PROJECT_NAME}
    Lib_1
    Lib_2
    ...
    Lib_N
)

和子文件夹中的 CMakeLists:

set(Lib_k_Src  # k = 1,2,...,N
    src1.h
    src1.cpp
    ...
)
add_library(Lib_k ${Lib_k_Src})

我想将 BOOST(或任何其他)单元测试套件附加到每个库组件,并确保每次构建组件时它都运行。或者,或者生成带有测试套件的可执行文件,可以与主执行程序分开运行。

到目前为止,我的所有尝试都未能将 Boost 和 CppUnit 与主要可执行文件集成,从而在附加第三方单元测试库时导致链接器错误(通常是 LNK1104)。我已经为 boost include 和 lib 目录创建了 Windows 环境变量,并尝试了一些 available examples with CMake,但这些甚至不会在 CMakeGUI 中配置。我唯一的运气是在单独的解决方案中使用 CppUnit,没有 CMake 生成的包装器,在运行时通过 Main.cpp 使用 CppTestRunner。

知道如何解决这个问题吗?

我花了几天时间试图解决这个问题,甚至考虑实现我自己的断言宏进行测试,以便在运行时从 main 调用它们。

可以在 here 中找到我的 Boost 设置。目前,我已经生成了一个测试库 Symplekt_GeometryBase_Tests 到 Symplekt_GeometryBase 作为原型。 感谢您提供任何有用的见解。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)