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

Replace a class within a Dll for unit testing

本文关键字:单元测试 Dll 替换      更新时间:2023-10-16

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

可能吗?我该怎么做?

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

所以你需要做的是:

  1. 将新的源文件 (.cpp) 添加到测试项目中(= 链接 GoogleTest 库和 DLL 的源文件 (= 链接 GoogleTest 库和 DLL 的文件)。
  2. 在这个新的.cpp文件中实现假类。 确保该类的假版本具有完全相同的签名(即相同的类名、命名空间、方法)。
  3. 实现假类的方法,以便他们做假行为。
  4. 生成测试项目。链接器不应抱怨缺少或双重定义的符号。