当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《我应该如何对代码生成器进行单元测试?》经验,为你挑选了2个好方法。

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

我已经开发出一种码生成器,其将我们Python接口我们的C++代码(通过SWIG生成),并产生以暴露此作为Web服务所需的代码.当我开发这个代码时,我使用TDD做到了,但我发现我的测试很脆弱.因为每个测试基本上是想验证的输入给定码位(这恰好是一个C++头)我得到的输出给定码位我写了一个小引擎,从XML输入文件读取测试定义和生成测试来自这些期望的案例.

问题是我害怕进入修改代码.那个单元测试自己的事实是:复杂的,b:脆弱的.

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

有没有人有任何类似于他们想要分享的东西的经历?



1> angry person..:

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

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

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



2> Pat Notz..:

回想一下,"单元测试"只是一种测试.您应该能够对代码生成器的内部部分进行单元测试.你在这里真正看到的是系统级测试(又名回归测试).这不仅仅是语义......有不同的思维模式,方法,期望等等.这肯定是更多的工作,但你可能需要咬紧牙关并建立一个端到端的回归测试套件:修复C++文件 - > SWIG接口 - > python模块 - >已知输出.你真的想根据预期的输出检查已知的输入(固定的C++代码)(最终的Python程序出来的).直接检查代码生成器结果就像区分对象文件一样......

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有