我正在尝试在我的项目中集成Ctest和googletest。我按照https://crascit.com/2015/07/25/cmake-gtest/中的说明在我的项目中添加了googletest。
我使用CoreTest.cpp和CMakeLists.txt创建了一个新的测试文件夹。 CMakeLists包含:
ADD_EXECUTABLE(CoreTest CoreTest.cpp)
TARGET_LINK_LIBRARIES(CoreTest corelib gtest gmock)
ADD_TEST(NAME CoreTest COMMAND CoreTest)
CoreTest.cpp包含:
int main(int argc, char **argv)
{
testing::InitGoogleTest(&argc, argv);
//return RUN_ALL_TESTS();
return 0;
}
这失败了:
1>------ Rebuild All started: Project: RUN_TESTS, Configuration: Debug x64 ------
1> Test project
1> Start 1: CoreTest
1> 1/1 Test #1: CoreTest .....................***Failed 1.52 sec
1>
1> 0% tests passed, 1 tests failed out of 1
但是,如果我对InitGoogleTest行发表评论,那么测试会成功。
关于这里可能出现什么问题的任何想法?
非常感谢!
谢谢axalis!我试图从命令行运行并意识到googletest dll不在我的路径中,这就是问题所在。
我添加了多个测试,但我只能在MSVC中看到ctest输出:
1>------ Rebuild All started: Project: RUN_TESTS, Configuration: Debug x64 ------
1> Test project
1> Start 1: CoreTest
1> 1/1 Test #1: CoreTest ..................... Passed 0.03 sec
1>
1> 100% tests passed, 0 tests failed out of 1
有没有办法像我从控制台那样看到googletest输出?:
>CoreTest.exe
[==========] Running 2 tests from 1 test case.
[----------] Global test environment set-up.
[----------] 2 tests from MathTest
[ RUN ] MathTest.TwoPlusTwoEqualsFour
[ OK ] MathTest.TwoPlusTwoEqualsFour (0 ms)
[ RUN ] MathTest.TwoPlusFourEqualsSix
[ OK ] MathTest.TwoPlusFourEqualsSix (0 ms)
[----------] 2 tests from MathTest (1 ms total)
[----------] Global test environment tear-down
[==========] 2 tests from 1 test case ran. (4 ms total)
[ PASSED ] 2 tests.
答案 0 :(得分:1)
GoogleTest模块提供了两个函数,可用于显示测试可执行文件中定义的每个单独测试的结果。 gtest_add_tests()
是在配置时扫描源文件的传统方法,而gtest_discover_tests()
(可从CMake 3.10获得)延迟计算测试集,直到CTest运行并且更稳健(例如它对类型或值参数化测试没有问题。
如果使用CMake 3.8或更早版本,则gtest_add_tests()
功能由FindGTest
而不是GoogleTest
提供。如果您需要与较旧的CMake版本兼容,请使用FindGTest
,因为它无论如何都会引入GoogleTest
模块。如果您可以要求使用CMake 3.9或更高版本,请直接使用GoogleTest
因为您实际上并不想尝试找到gtest,因为您将其直接合并到构建中。使用3.10或更高版本,您的测试可以这样定义:
include(GoogleTest)
gtest_discover_tests(CoreTest)