c++ - 创建可测试代码

标签 c++ unit-testing refactoring testability

我有一个文件 - 在一个大型遗留代码库中 - 包含访问数据库的方法。 没有使用任何类,只有带有方法声明的头文件和带有实现的源文件。

我想覆盖这些方法以消除单元测试期间的数据库访问。

我想到了以下选项:

  1. 将文件制作成类并覆盖方法。
    这里的主要缺点是它会导致整个代码库发生大量变化。
    不理想,虽然它确实改进了代码...
  2. #ifdef PRODUCTION_CODE 包装整个源文件并创建一个包含 stub 的新源文件并用相反的包装它,即使整个事情编译依赖。这里的问题是,在执行回归测试的构建系统中,我必须编译两次,一次是为了创建应用程序和进行回归测试,另外一次是为了创建单元测试可执行文件。

有什么推荐的方法吗?

最佳答案

如何获取现有函数,将代码移到新类中并从现有函数中调用新方法,然后在测试期间覆盖此类?

像这样:

 static DBAccessClass dac = new DBAccessClass ();

 void origFunction() { dac.origFunction(); }

在测试中:

 dac = new DBAccessMockup();

关于c++ - 创建可测试代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1632624/

相关文章:

c++ - 编译qemu-xen时signal.c出错

angular - 如何修复 "Error: Expected to be running in ' ProxyZone',但未找到。” 在 mocha 测试中?

jQuery:淡出 - 做某事 - 淡入模式

java - 跨数据类型重构相似代码

function - Clojure 函数的更惯用和优雅的方式

c++ - 当服务器无法访问时,curl_easy_perform 返回 -1

c++ - 是否可以将html和js嵌入到QwebKit中

c++ - 二进制搜索的问题

visual-studio - 如何使用 Visual Studio 的内置自动化测试对文件写入方法进行单元测试?

java - 如何对二进制方法进行单元测试?