如何实现返回二进制数据的简单C函数的单元测试
How to implement unit test for a simple C function that returns binary data?
我想为一个应该压缩或解压缩一些数据的函数实现一些非常简单的C/C++单元测试。
输入主要是二进制块,输出也是二进制块。二进制块应该小于50个字节,可能有5-6对。
我正在寻找一个最好不需要第三方库的解决方案。如果需要的话,这个应该非常小/简单。
"我正在寻找一个不需要第三方库的解决方案。"
只需编写单元测试函数,这很容易:创建一个函数,该函数将使用不同的参数调用待测试集函数,并将结果与预期输出进行比较。将指向该测试函数的函数指针添加到全局函数指针数组中,在该数组中存储所有测试函数,以便根据需要运行所有测试函数。
不知怎么的,你需要验证你的功能,我能想到的唯一解决方案是:
- 使用一些第三方图书馆(已知在实践中有效)
- 使用一些您确切知道输出应该是什么样子的数据序列
我能想到两种类型的单元测试。1.检查输出是否正确。为此,您可以尝试使用已知输出的输入。在单元代码中,您可以将该方法的输出与已知输出进行比较。2.单独检查回归。我在某种遗留代码库中使用了这些测试。在这里,您的功能以某种方式得到了验证(可能通过其他方式进行了测试)。但是,当有人对此代码进行一些更改时,您需要确保主输出没有损坏。为此,您可以在特定的构建中调用该方法,在该构建中,您确信函数运行良好,并将此输出捕获为基线。稍后,您可以编写一个单元测试驱动程序来调用该方法,并将输出与所有后续构建中的基线输出进行比较。但是,当有意修改函数以稍后修改输出时,您需要记住更新基线。
我知道这是一个非常古老的问题,但我碰巧遇到了同样的问题
我将假设第三方依赖性是用于比较二进制数据的工具,而不是单元测试工具本身(我假设这是因为这是我的相同要求)。
我最终做的事情是这样的:
char result_buffer[] = "“jJ";
auto n = memcmp(result_buffer, your_function(), sizeof(char) * 3);
为了获得result_buffer的值,我实际上使用调试器并从中获取该值。这样我就可以确保它是正确的
之后,剩下要做的就是使用单元测试工具检查n是否为0。
- 从函数返回任意简单类型的数据
- HDF5 简单读取数据集失败
- 学习数据结构和算法的简单方法
- 简单使用 std::atomic 在两个线程之间共享数据
- 在C++中创建一个简单的数据包路由器,如何跟踪"客户端"?
- OpenSSL模块化最大数据类型大小的简单方法
- 从 txt 文件中读取数据的最简单方法
- 从 NS3 获取简单的指标,如吞吐量与时间、数据包丢失与时间的关系
- 是否有一种简单的方法可以从普通的 win32 C++代码向应用程序见解提供数据?
- 模板类型在简单的数据类型中扣除
- 从 C# 到通过 PInvoke C++的简单结构中的垃圾数据
- 在OpenGL中移动一个简单的形状(形状在数据结构中)
- 为什么我不能从输入文件中检索简单数据并使用C++将其写入输出文件?
- C++用户将数据输入 2D 数组的最简单方法是什么?
- 尝试在64位数据类型上运行简单模板内核时,cudaErrorLaunchFailure
- 比较来自同一类型的两个对象的数据成员的最简单方法
- 在QTcpSocket中连续发送XML数据的最简单方法
- 在C++/Qt中创建简单的WebService(充当服务器),提供JSON数据
- C++,mpi:创建随机数据的最简单方法
- 一个简单的PC应用程序制造商的数据记录应用程序