c++ - 我应该如何对代码生成器进行单元测试?

标签 c++ python unit-testing code-generation swig

我知道这是一个困难且开放式的问题,但我想我会把它扔到地板上,看看是否有人有任何有趣的建议。

我开发了一个代码生成器,它将我们的 python 接口(interface)与我们的 C++ 代码(通过 SWIG 生成)相结合,并生成将其公开为 WebServices 所需的代码。当我开发这段代码时,我是使用 TDD 完成的,但我发现我的测试非常脆弱。因为每个测试本质上都想验证对于给定的输入代码位(恰好是 C++ header )我会得到给定的输出代码位我编写了一个小引擎,它从 XML 输入文件中读取测试定义并生成测试这些预期的案例。

问题是我根本不敢修改代码。这一点以及单元测试本身是 a:复杂,b:脆弱的事实。

因此,我正在尝试考虑解决此问题的替代方法,这让我感到震惊,我可能是以错误的方式解决它。也许我需要更多地关注结果,IE:我生成的代码是否真正运行并执行我想要的操作,而不是代码看起来像我想要的那样。

有没有人愿意分享类似的经历?

最佳答案

我开始写我自己的代码生成器的经验总结,然后回去重新阅读你的问题,发现你自己已经触及了同样的问题,专注于执行结果而不是代码布局/看。

问题是,这很难测试,生成的代码可能不适合在单元测试系统的环境中实际运行,你如何编码预期的结果?

我发现您需要将代码生成器分解成更小的部分并对它们进行单元测试。如果您问我,对完整的代码生成器进行单元测试更像是集成测试而不是单元测试。

关于c++ - 我应该如何对代码生成器进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11060/

相关文章:

python - 具有原始规范 Python 的模拟类

c++ - 如何分析、查找和修复 C++ 函数中的安全漏洞?

c++ - FastCGI与C++除了spawn-fcgi之外的其他启动方式

python - 为什么我会收到 plotly 明确的属性错误? (属性错误: 'Figure' object has no attribute 'add_hline'

python - Pandas DataFrame 重新采样中出现意外数量的 bin

python - 从 pandas .mean() 中排除列

c++ - 右对齐三角形的间距

c++ - 无法打印 signed int 类型的大小

unit-testing - 使用单元测试进行实际重构

java - Junit 框架单元测试 : Mockito. doNothing() 在模拟 void 方法时无法按预期工作