关于cmake和ctest,我不太了解。我实际上找不到一个很好的教程或能够很好地解释ctest的东西。
我试着为我的代码编写一些测试。我将测试放在不同的函数中,这些函数都是从main.cpp调用的,如下所示:
int main()
{
test1();
test2();
test3();
...
exit(0);
}
我创建了一个CMakeLists.txt来创建目标测试。
set (TESTS
main.cpp
)
add_executable (tests ${TESTS})
target_link_libraries (tests ...)
enable_testing()
add_test(my-test tests)
现在我可以拨打 ctest run
$ ctest run
Test project /.../tests
Start 1: my-test
1/1 Test #1: my-test ......................... Passed 0.01 sec
100% tests passed, 0 tests failed out of 1
Total Test time (real) = 0.01 sec
但这只给我一个测试用例,虽然在内部我有多个测试用例,每个测试用例都在一个单独的函数中。我可以提取函数来分隔文件,但这样我就有数百个文件。如何避免每个测试都有单独的文件?
我一直在找这样的东西。
add_test( test1 tests::test1() )
add_test( test2 tests::test2() )
我完全清楚这是错误的,天真的等等。但我希望你能够了解我的问题。
答案 0 :(得分:2)
CTest仅适用于命令,即可执行文件或等效命令。它调用测试运行器。它本身不是测试运行者。
正常的测试方法是
因此,从这个角度来看,您的问题似乎是第1步:您需要一个测试框架来创建粒度测试输出。