小编典典

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

python

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

我已经开发了一个代码生成器,它将我们的python接口与我们的C
代码(通过SWIG生成)相结合,并生成将其公开为WebServices所需的代码。当我开发此代码时,我是使用TDD来完成的,但是我发现我的测试像地狱一样脆弱。因为每个测试本质上都是想验证给定的输入代码(恰好是C
头),所以我会得到给定的输出代码,所以我编写了一个小型引擎,该引擎从XML输入文件读取测试定义并生成测试这些期望的案例。

问题是我根本不想修改代码。单元测试本身的事实和事实是:复杂:a;脆弱。

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

有没有人有类似经验的分享经验?


阅读 220

收藏
2021-01-20

共1个答案

小编典典

我开始编写自己的代码生成器的经验总结,然后返回并重新阅读您的问题,发现您自己已经碰到了相同的问题,着重于执行结果,而不是代码布局/外观。

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

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

2021-01-20