gpt4 book ai didi

cppunit - 如何为 libevent 管理的事件驱动应用程序编写单元测试?

转载 作者:行者123 更新时间:2023-12-01 12:57:30 25 4
gpt4 key购买 nike

我正在使用用于异步 I/O 的 libevent 库编写一个事件驱动的应用程序。本质上,该应用程序有一个 evconnlistener 监听端口上的数据。接收数据时,根据数据负载将数据转发到相应的 http REST 端点。转发组件使用libevent提供的evhttp_*。

我能够将应用程序作为外部进程进行测试,以满足应用程序的健全性,但在生成代码覆盖率报告时,我感到很困惑。我如何着手编写可通过常规单元测试框架(如 cppunit)调用的单元测试?

最佳答案

在异步 I/O 调用周围添加一个包装层。然后,您可以替换一个“MockIO”类来为您的测试提供有关处理 I/O 连接的信息。

听起来您更像是在描述集成而不是单元测试。单元测试实际上是关于单独测试每个单独的模块,而不是它们如何组合在一起以提供系统功能。

一个单元测试将确保从 I/O 事件接收到数据。单独的测试将确保正确接收到 REST 端点的数据。另一个单独的测试将确保 REST 端点按需要解析它。关于 I/O 事件测试,我将添加更多单元测试来模拟 I/O 故障、断开的连接和其他不愉快的路径,所有这些都是为了确保异常处理代码正常运行,并且其中的所有代码行模块进行了测试。同样,我还会使用各种错误输入来测试端点:空指针、空缓冲区、超长缓冲区、意外数据类型,以及通过该方法执行所有路径所需的任何不同测试。

我们努力(但并不总是实现)单元测试中的完整代码覆盖率。集成测试显示各个部分成功组合在一起,但我们不能总是测试每个交互。一个重要的假设是,如果单元测试通过,那么无论它们在做什么,这些部分都应该能够很好地协同工作。

我认为一本书可以让您更好地了解自动化单元测试,从而更好地帮助您突破“难过”的阶段。如果您正在尝试向现有项目添加单元测试,Michael Feathers 的书 Working Effectively with Legacy Code 绝对很棒(Mike 是 CppUnit 的作者。)如果您只是从一个小项目开始,The Art of Roy Osherove 的单元测试是一本好书。一旦您了解了单元测试的想法,Gerard Meszaros 的 xUnit 测试模式是一个很好的资源,可以帮助您学习如何编写可维护的测试。

如果有机会,花一些时间向导师学习。

关于cppunit - 如何为 libevent 管理的事件驱动应用程序编写单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8930479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com