如何在C语言中使用CTest和check库进行单元测试

3

我有一个项目,想要使用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启用的可执行文件的结果吗?

1个回答

2

使用CTest和check一起进行单元测试是可能的,但不方便。

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


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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接