从库中执行所有测试(gtest)

时间:2017-11-30 10:34:54

标签: c++ googletest

我在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,结果总是一样。

1 个答案:

答案 0 :(得分:0)

似乎设计GTest只选择.exe项目中定义的TEST()个案。静态库中的那些被忽略。

检查此配置:

将gtest lib构建为静态库。 将.cpp(TEST()宏,...)中的测试放入创建可执行文件的项目中。 应该从.exe项目中的main调用GTest初始化:

 ::testing::InitGoogleTest(&argc, argv);
 return RUN_ALL_TESTS();