我的vs解决方案中有各种可执行项目,其中包含各种googletest案例。我试图通过一个单独的.lib项目来减少代码,该项目只包含
main()
函数和googletest的初始化代码。然后我可以将此链接到包含实际测试的所有exe项目中:
所以:
---main.cpp in static lib project TESTMAIN---
#include <gtest/gtest.h>
int main(int argc, char* argv[])
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
以及
---accounttest.cpp in exe project TESTACCOUNT
#include <gtest/gtest.h>
struct BankAccount
{
int m_iBalance;
BankAccount(){}
};
TEST(AccountTests, BankAccountStartsEmpty)
{
BankAccount account;
EXPECT_EQ(0, account.m_iBalance);
}
但是,在运行testaccount.exe时,不会拾取单元测试:
Running main() from gmock_main.cc
[==========] Running 0 tests from 0 test cases.
[==========] 0 tests from 0 test cases ran. (0 ms total)
[ PASSED ] 0 tests.
当显式添加
主()
(使用gtest init代码)到我的exe项目,它确实有效。我的预感是这与链接器有关,但我不确定为什么这不起作用。我仍然希望避免在所有测试项目中添加main+init。
任何关于如何做好这件事的建议都会非常感谢。
本