我在c ++中有一个foo库,我使用gtest作为测试框架。
我想创建调用runTests的testFoo可执行文件,该文件在静态链接的testFoo库中定义,该库包含静态链接的foo库的所有测试。
我已经创建了所有我写的内容,但谷歌测试显示我“空测试套件。”
testFooLib.h
int runTests(int argc, char* argv[]);
testFooLib.cpp
int runTests(int argc, char* argv[]) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
如果我把
TEST(Testing, someTest){
EXPECT_EQ(true, true);
}
在testFooLib.cpp中,找到了这个测试,但如果我把它放在其他一些cpp中,它将无法找到。
testFooExecutable.h
#include "testFooLib.h"
int main(int argc, char** argv) {
return runTests(argc, argv);
}
我在项目中有一些测试,我不想用它来污染我的帖子...... 更新,我已经在代码中进行了测试。 我遇到与important-note-for-visual-c-users相同的问题。
注意:我尝试过使用clang,gcc和msvc,结果总是一样。
答案 0 :(得分:0)
似乎设计GTest只选择.exe项目中定义的TEST()个案。静态库中的那些被忽略。
检查此配置:
将gtest lib构建为静态库。 将.cpp(TEST()宏,...)中的测试放入创建可执行文件的项目中。 应该从.exe项目中的main调用GTest初始化:
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();