c - 如何使用带有 CTest 的检查库在 C 中进行单元测试

标签 c cmake ctest check-framework

我有一个我想在其中使用的项目 check用于单元测试的库。

我当前的项目正在使用 CMake 并具有以下结构:

.
├── CMakeLists.txt
├── COPYING
├── ChangeLog
├── README
├── src
│   ├── core
│   │   ├── CMakeLists.txt
│   │   └── main.c
│   ├── core-test
│   │   ├── CMakeLists.txt
│   │   └── main.c
│   └── scrypt
└── doc
    └── protocol.txt

core-test 中,我对 core 模块进行了单元测试。在 scrypt-test 中,我将对 scrypt 模块等进行测试。


在 CTest 中使用 check 是否有意义?

如果是:如何将使用 check 的单元测试连接到 CMake/CTest 项目?我是否需要 CTest 的额外配置来解释启用check 的可执行文件的结果?

最佳答案

在 CTest 中使用 check 是可能的,不幸的是不方便。

当使用 check 的单元测试失败时,它们将被计为 CTest 中的失败。问题是,CTest 不显示失败的应用程序的输出1。另一个缺点是 CTest 不计算单个 check 测试,因此“单个”失败测试可能意味着多个 check 测试。我找不到让 CTest 解释检查结果的方法。


  1. 您可以通过在 build 目录中创建 CTestCustom.cmake 文件来强制打印输出(与您运行 makectest),内容如下:

    set (CTEST_CUSTOM_POST_TEST "cat Testing/Temporary/LastTest.log")

关于c - 如何使用带有 CTest 的检查库在 C 中进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9151953/

相关文章:

使用 OpenMP 的教程计算 Pi 算法

cmake - 对于 CMakeLists.txt 中的特定项目,将 ctest 命令永久替换为 "ctest --output-on-failure"

c++ - Cmake - 如何复制带有输入数据的文件以构建输出文件夹

c - 删除静态声明的数组的前两个元素不起作用

c - 128 位整数在英特尔 C 编译器中支持 +、-、*、/和 %?

python - 在python中将类对象读/写到dat文件

c++ - CMake: 'AUTOMOC' 功能跳过可执行目标的来源?

android - android 原生库构建的 minSdkVersion、CompileSdkVersion 和 ANDROID_NATIVE_API_LEVEL 之间的关系

qt - 使用 CMake 包含 QtMultimedia(或 QSound 所需的任何内容)模块

cmake - 如何将 CTest 与 Node js 命令一起使用,测试使用 emscripten 从 C++ 编译的 JS 文件,并使用 Catch2?