当前位置:  开发笔记 > 程序员 > 正文

在第三方软件API(AutoCAD)上进行单元测试的最佳实践

如何解决《在第三方软件API(AutoCAD)上进行单元测试的最佳实践》经验,为你挑选了1个好方法。

我们正在开发在AutoCAD中使用的应用程序.基本上我们创建一个类库项目,并使用命令(NETLOAD)在autoCAD中加载.dll.

因此,我们可以使用命令,"调色板",用户控件,表单等...

AutoDesk通过在程序目录中运行的某些dll提供API.在引用这些dll时,您只能在运行时在AutoCAD中加载应用程序时调用dll(这是AutoDesk的许可安全性).

对于我们来说,在开发时,这不是问题,我们需要在AutoCAD的上下文中进行可视化测试,因此我们只需设置Debug Properties以便它们启动acad.exe并使用acad.exe参数中的脚本加载我们的dll .

问题是,在尝试对我们的代码进行单元测试时,NUnit或mstest没有在AutoCAD上下文中运行,也无法启动它.有一个名为Gallio的工具,它提供了与AutoCAD的接口,因此它可以通过带有命名管道的IPC运行单元测试.

但是,对我来说,这个解决方案太麻烦了.我希望能够快速编写测试而无需离开我心爱的IDE.

那么,从"良好的设计观点"来看,这个问题的好方法是什么呢?我想我基本上需要一个可测试的代码库,它不参考AutoCAD dll和一个不可测试的参考不可测试的AutoCAD dll的代码库.

我确信有办法让这个工作:(IOC,DI,Adapter Pattern,...)我只是不深入这些原则,因此我不知道哪条路线最适合我的目的和目标.



1> Aaron Digull..:

第一步是对需要AutoCAD的零件和真正独立的零件进行分类.像往常一样为独立零件创建单元测试.

对于其他部分,您需要具有类似AutoCAD的模型.使它们尽可能简单(例如,只需在方法中返回正确答案而不进行任何计算).现在,您需要几组类:

    代码用于实现某些内容的一组接口(例如,加载绘图).

    调用AutoCAD dll的所述接口集的一组实现.

    一组在AutoCAD上下文中尝试实现的类.只需创建一个带有几个按钮的小UI,您就可以在其中运行此代码.它用来向你保证你的模型做正确的事情.将方法参数和结果记录到某个文件,以便您可以尝试AutoCAD如何响应.如果模型中断,您可以使用此代码来验证AutoCAD正在执行的操作,并且可以在开发模型时将其用作参考.

    了解AutoCAD的响应方式后,请创建模型.在测试中,使用所需的结果创建它们(和错误,因此您也可以测试错误处理).所以,当你有boolean loadDrawing(File filename),创建一个模型,返回true文件名exists.dxffalse其他任何东西.

    使用工厂或DI告诉您的应用程序代码使用哪种实现.我倾向于有一个很大的全局配置类,有很多公共字段,我只是存储要使用的对象.我可以在开始时设置它,它很快,很容易理解.如果需要在运行时创建对象,则将工厂放在config类中,为您生成对象,这样就可以将它们交换出来.


@Bertvan:找到这个问题的答案:你对每个ACad对象的代码有多么肯定?如果您不确定,请写一个测试.当它变得无聊时,停下来.当您发现新错误并再次不确定时,请添加更多测试.你必须找到*你最好的路径.
推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有