Когда дело доходит до 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() )
Я прекрасно понимаю, что это неправильно, наивно и так далее. Но я надеюсь, что вы получите представление о моей проблеме.