替换Dll中的某个类以进行单元测试

时间:2019-01-14 09:17:43

标签: c++ unit-testing dll mocking googletest

我的目标是使用单元测试来检查DLL。 我已经有一个加载DLL并使用Google测试对其进行检查的项目。 现在,我想用一个模拟替换DLL中的一个类,然后重复测试。

可以吗?我该怎么办?

1 个答案:

答案 0 :(得分:0)

有一个链接程序小技巧,可用于解决此问题。如果链接器在属于测试项目的编译单元中找到要替换以进行测试的类,则它不会在DLL中搜索它;)

所以您需要做的是:

  1. 将新的源文件(.cpp)添加到测试项目(=同时链接GoogleTest库和您的DLL的文件)。
  2. 在此新的.cpp文件中,实现伪类。确保该类的伪造版本具有完全相同的签名(即,相同的类名称,名称空间,方法)。
  3. 实施假类的方法,以便它们执行假行为。
  4. 构建测试项目。链接器不应抱怨缺少符号或没有重复定义符号。