我有几个基于MFC的项目(DLL)。我想在里面添加一些GTest/GMock测试。动态DLL负载和谷歌测试
我需要用最少的efford做这样马的计划是:
- 附加测试文件到每个库,并将其链接对gmock.lib
准备一份动态加载所需的一个可执行文件以最小的主DLL()是这样的:
int main(int argc, char** argv) { LoadLibrary(argv[1]); testing::InitGoogleMock(&argc, argv); const int status = RUN_ALL_TESTS(); return status; }
的问题是,从装载的库测试是不可见的米y exe文件(dll被加载并确认初始化)。输出是:
[==========] Running 0 tests from 0 test cases.
[==========] 0 tests from 0 test cases ran. (0 ms total)
[ PASSED ] 0 tests.
这似乎我应该以某种方式从dll文件引入测试到exe但我找不到任何信息。 我的方法好吗?或者也许还有其他简单的方法?
感谢您的回答。你的解决方案有一些缺点:1.Dll由数千个类和函数组成,我不能使它们全部可见,所以在exe文件中的测试可以使用它们全部。 2.为每个DLL在Visual Studio中制作单独的exe项目可能不是正确的方法。在dll中进行测试对我来说很好,因为测试在发布版本中根本不会编译。 –
@MichałWalenciak1.我确实知道这是这种情况,我已经编辑了我的答案,以便单元测试在DLL内部。 2.我不打算建议你为每个DLL分别制作一个exe文件。但是,这从我的回答中并不清楚,所以我明白你为什么认为我在暗示它。我还编辑了答案的这一部分以清楚地说明问题。 –
@MichałWalenciak请注意一件事。我明白在DLL中保持单元测试是最好的方法,但是总是在调试模式下运行测试只会导致一些细微的错误漏洞。考虑不时在发布模式下构建单元测试,并运行它们以确保安全。 –