C++ 设置GoogleTest在一个可执行文件中运行所有测试
在设置我最近的项目时,我试图使用GoogleTest。目前我有:C++ 设置GoogleTest在一个可执行文件中运行所有测试,c++,googletest,C++,Googletest,在设置我最近的项目时,我试图使用GoogleTest。目前我有: macro(add_test_l TEST_NAME) # Create the executable and use the last arguments as source files. add_executable(${TEST_NAME} ${ARGN}) # Link in the AMR and gtest libraries. target_link_libraries(${TES
macro(add_test_l TEST_NAME)
# Create the executable and use the last arguments as source files.
add_executable(${TEST_NAME} ${ARGN})
# Link in the AMR and gtest libraries.
target_link_libraries(${TEST_NAME}
${PROJECT_NAME}
gtest
gmock
gtest_main
)
# Add the test to gtest.
add_test(
NAME ${TEST_NAME}
COMMAND ${TEST_NAME}
)
list(APPEND TEST_SOURCE_FILES ${ARGN})
endmacro()
然后我可以添加我的测试,比如add\u test\l(Element set/Element.test.cpp)
,这样既有效又方便。但这当然会为每个测试创建一个可执行文件,这并不是一件坏事,因为它允许对单个文件进行快速测试
虽然我确实希望能够使用单个exe运行所有测试(这样CI将更容易),但我在宏的末尾列出了该列表,在添加了所有单个测试之后,我有:
add_executable(all_tests ${TEST_SOURCE_FILES})
target_link_libraries(all_tests
${PROJECT_NAME}
gtest
gmock
gtest_main
)
它创建一个EXE来运行我的所有测试用例
这似乎并不高效,因为我将所有文件编译了两次。有没有更好的方法让我达到预期的结果?也许我可以添加一个选项来启用/禁用单个测试和所有测试的EXE。每个文件都不需要一个可执行文件。为所有测试构建一个可执行文件,并学习gtest选项--gtest_过滤器。您可以单独运行每个测试:
all_tests --gtest_filter=Element.Test
或者您可以运行所有元素测试,如宏add\u test\l
是否:
all_tests --gtest_filter=Element.*
有关命令行选项的详细信息,请参见:
all_tests --help
其中一个有用的命令:
all_tests --gtest_list_tests