模拟 - 方法和工具
Mocking - Methods & Tools
我自学了gmock并理解了它的功能。如果我们可以模拟一些方法并测试我们的流程,那就太好了。
我现在的问题是我们有巨大的代码存储库,它为特定流调用许多子模块接口 - 即底层类方法调用许多子模块/子模块接口:
bool classA::methodA(uint64_t number) {
if (0 == number) {
return false;
}
Foo* p=&obj;
while (true && (p->*fptr)(number)) {
if (1 == number) {
return true;
} else if (0 == number%2) {
number = number / 2;
} else {
Printer* machine;
char* buff;
PTR pmf[2]= {&B::Copy, &B::Append};
(machine->*pmf[APPEND])(buff, number);
number = 3 * number + 1;
}
}
}
是否有一种方法/机制/经验法则,通过它我们可以识别/了解需要模拟以测试我的类 100% 代码的所有子模块方法?
这里不需要规则。你只是嘲笑需要被嘲笑的东西。仅此而已,仅此而已。
请记住:您编写单元测试的想法是单独测试您的单元。这意味着您有时必须将单元的依赖项"剪切"到其他代码中。
现在让我们假设您的代码正在使用某个依赖项 B。
- 当您可以调用代码时,将真正的 B 保留在原位 - 很好。然后这样做。
- 当 B 在单元测试设置中失败,或者您需要控制 B返回给代码的内容时 - 那么您需要一个模拟。
从这个意义上说,经验法则是:如果有必要,可以模拟事物。
因此,我们无法告诉您究竟要嘲笑什么。相反,您必须退后一步并:
- 首先,了解您希望如何对代码进行单元测试
- 然后你看看它的依赖关系
- 然后,您可以尝试在没有任何模拟的情况下调用代码时会发生什么
- 然后,您从前面步骤收集的数据中得出结论
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 通过方法访问结构
- 最小硬币更换问题(自上而下方法)
- C++为构建时间获取QDateTime的可靠方法
- 在OSX上使用CMake将Adobe的XMP工具包构建为共享库的最简单方法是什么?
- 模拟 - 方法和工具
- 有没有更好的方法可以使此代码线程安全?线程局部静态似乎是一个生硬的工具
- 您是否知道使用非恢复构建方法来管理构建的任何构建工具
- 用于在C++代码库中检索函数和方法列表的工具
- 哪个工具可以在C++中显示方法或函数的最大语句
- 识别 C 文件和包含的头文件之间依赖关系的工具/方法
- 用于解析C++源代码并将头内联方法移动到.cpp源文件的工具
- 是否有调试机制、解决方法、包装器或工具来检测shared_ptr周期
- 是否有任何工具/方法来检测/删除所有未使用的变量,宏,头(包括)和函数从c++代码
- 理解面向对象代码的工具和方法
- 支持XNAWP7和闪存与现有的C++代码库-管道,工具和方法
- 是否有客观衡量绩效的工具/方法?
- 将python命令行工具分发给他人的最简单方法
- 具有成员方法的MFC多行工具提示
- 机器学习-词袋方法/工具/ c++库