c++ - 在 C++ 中使用序列化模拟对象进行单元测试

标签 c++ testing serialization tdd mocking

问候,

我对 TDD 还很陌生,遇到了一个我不太确定如何解决的单元测试。

基本上,我正在测试几个旧类方法,这些方法将二进制流读/写到文件中。类函数将一个可序列化对象作为参数,该对象处理对文件的实际读/写。

为了测试这个,我想我需要一个序列化模拟对象,我将传递给这个函数。我最初的想法是让模拟对象保持在一个 (char*) 上,它将动态分配内存并 memcpy 数据。但是,看起来模拟对象可能做了太多工作,并且可能超出了这个特定测试的范围。

我最初的方法是否正确,或者有人能想出另一种正确测试方法吗?

谢谢!

最佳答案

我敢肯定对此会有一些分歧,但我觉得模拟对象是一个高级主题。在深入模拟之前,我会对无模拟 TDD 感到满意。也就是说,有很多问题最好用模拟来解决。在这种情况下,您的模拟实际上不需要做任何事情,只需记录调用函数已经调用了它们。在单独的测试中测试实际的读取器和写入器。您的模拟工作量太大的直觉是正确的。

关于c++ - 在 C++ 中使用序列化模拟对象进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2541423/

相关文章:

c++ - 访问基类型数组成员(Int-to-Type 习语)

c++ - OpenCV 从正方形 vector 中提取图像区域

unit-testing - Joomla 3.0——用于测试目的的独立应用程序

c# - 有没有人使用 Hessian 二进制远程协议(protocol)来桥接使用 Java 和 .NET 的应用程序?

c++ - 带链表的哈希表,重复节点仍在保存(C++)

SQL仅获取不匹配的列

javascript - 如何阅读 Istanbul 尔报道?

python - Django rest 框架表示展平嵌套对象

Node.js 将自定义对象序列化/反序列化到 mongodb

c++ - 如何将 Python 编译成 C++ .exe