我有一个小型测试项目,其布局如下:
testmain.cc Foo\ |--FooClass1_test.cc |--FooClass2_test.cc Bar\ |--BarClass1_test.cc |--BarClass2_test.cc
在* _test文件中,我按照
的顺序定义了测试TEST(Foo, foo_func1_works)
{
EXPECT_EQ(42, the_answer);
}
testmain.cc仅包含:
#include <gtest/gtest.h>
int main(int argc, char* argv[])
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
我可以看到TEST宏生成RUN_ALL_TESTS
会知道的自注册类,但这段代码是如何链接的?什么都没有引用.cc文件中定义的测试,没有包含等等。为什么链接器不会抛弃此代码?我正在使用MSVC 2010编译该项目。