如何对库的内部实现进行单元测试?

问题描述 投票:0回答:0

我正在尝试将单元测试添加到我的库中,目录布局如下:

include/
公共标题
src/
内部实施

我希望能够对内部实现进行单元测试。到目前为止,我已经尝试将我的库静态链接到单元测试可执行文件并添加

src/
以包含目录。它工作正常,我能够测试隐藏的内容。当库动态链接到可执行文件时,问题就开始了,因为内部类没有被导出。

解决方案可能是创建两个库:用于实现的静态库和一个将链接到该静态库的主库。这样,实现静态库可以链接到单元测试 exe。

首先,我不知道如何创建主库,以便将其编译为共享库或静态库(取决于

BUILD_SHARED_LIBS
)。由于所有源都被编译为静态库,因此没有主库可以编译的源(它只会用于公开公共头文件)。其次,我在内部使用spdlog(子模块,通过
add_subdirectory
添加)并且当
BUILD_SHARED_LIBS
ON
库之间的依赖关系如下:主库(共享库)<- impl library (static lib) <- spdlog (shared lib). It generates additional export problems.

什么可以解决上述问题?

c++ unit-testing cmake googletest
© www.soinside.com 2019 - 2024. All rights reserved.