替换 Dll 中的类以进行单元测试
Replace a class within a Dll for unit testing
我的目标是使用单元测试检查DLL。我已经有一个加载DLL并使用Google测试进行检查的项目。现在我想用模拟替换 DLL 中的一个类并重复测试。
可能吗?我该怎么做?
有一个小链接器技巧,你可以用它来解决这个问题。如果链接器在属于测试项目的编译单元中找到要替换的类,则它不会在 DLL ;)
所以你需要做的是:
- 将新的源文件 (.cpp) 添加到测试项目中(= 链接 GoogleTest 库和 DLL 的源文件 (= 链接 GoogleTest 库和 DLL 的文件)。
- 在这个新的.cpp文件中实现假类。 确保该类的假版本具有完全相同的签名(即相同的类名、命名空间、方法)。
- 实现假类的方法,以便他们做假行为。
- 生成测试项目。链接器不应抱怨缺少或双重定义的符号。
相关文章:
- 有什么好的方法可以让系统调用代理允许在单元测试中进行模拟
- 在子目录中使用target_sources()命令时用于单元测试(qtest)的项目结构
- VC++本机单元测试,找不到调试符号
- 用于交叉编译和CMake的预处理器宏的单元测试
- C++ 用于单元测试的模板模板
- 提升 1.64 单元测试编译失败
- 单元测试欧拉到四元数实现失败
- 运行 C++ 单元测试时LNK2005链接错误
- 禁用自动捕获 Googletest 单元测试中的C++异常
- 有没有办法在不使用 #ifdef 的情况下不编译发布版本中的单元测试函数体?
- 使用 Netbeans 进行单元测试 - 取消缓冲.dll没有这样的文件或目录
- 替换 Dll 中的类以进行单元测试
- 由 Boost 单元测试框架 dll 导出的 std::basic_ostringstream 会导致"already defined symbol"错误
- 如何将此资源加载到单元测试DLL中
- VS2013 单元测试 c++ dll 与 CppUnitTestFramework 崩溃
- 无法打开 DefaultTest.dll 进行单元测试
- 在使用 CMake 构建 Windows DLL 期间运行单元测试
- 是否可以将MS单元测试从EXE转发到DLL
- 如何在不注册dll的情况下对c++ COM代码进行单元测试?
- visualstudio2010-开发C++DLL与可执行单元测试,在编译和链接的同时