我有一个文件 - 在一个大型遗留代码库中 - 包含访问数据库的方法。 没有使用任何类,只有带有方法声明的头文件和带有实现的源文件。
我想覆盖这些方法以消除单元测试期间的数据库访问。
我想到了以下选项:
- 将文件制作成类并覆盖方法。
这里的主要缺点是它会导致整个代码库发生大量变化。
不理想,虽然它确实改进了代码... - 用
#ifdef PRODUCTION_CODE
包装整个源文件并创建一个包含 stub 的新源文件并用相反的包装它,即使整个事情编译依赖。这里的问题是,在执行回归测试的构建系统中,我必须编译两次,一次是为了创建应用程序和进行回归测试,另外一次是为了创建单元测试可执行文件。
有什么推荐的方法吗?
最佳答案
如何获取现有函数,将代码移到新类中并从现有函数中调用新方法,然后在测试期间覆盖此类?
像这样:
static DBAccessClass dac = new DBAccessClass ();
void origFunction() { dac.origFunction(); }
在测试中:
dac = new DBAccessMockup();
关于c++ - 创建可测试代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1632624/