我在CMake中有一个C++项目,我已经实现了单元测试(使用GoogleTest)以及集成测试,即执行应用程序并使用regexp检查结果,例如
add_test(NAME MyAppIntegration.testRefitRunMse COMMAND my_application "--refit=true")
set_tests_properties(MyAppIntegration.testRefitRunMse PROPERTIES PASS_REGULAR_EXPRESSION "mse\\=1\\.53611e\\-05")
Run Code Online (Sandbox Code Playgroud)
现在我想做同样的事情,但运行应用程序来检测内存错误,例如只需运行./my_application并检查valgrind的内存错误.我怎样才能做到这一点?请注意,我所知道的ctest -D ExperimentalMemCheck和ctest -T memcheck,但在这里我结束了错误Cannot find file DartConfiguration.tcl这似乎与我不需要仪表板配置.
好的,我找到了一个可能的解决方案。将这些行添加到我的CMakeLists.txt:
## valgrind
find_program(CTEST_MEMORYCHECK_COMMAND NAMES valgrind)
INCLUDE(Dart)
Run Code Online (Sandbox Code Playgroud)
生成所需的DartConfiguration.tcl任何内容,然后重新调用:
ctest -T memcheck
Run Code Online (Sandbox Code Playgroud)
运行所有测试并检查内存错误。