【发布时间】:2010-10-06 22:02:52
【问题描述】:
我们正在开发在 AutoCAD 中使用的应用程序。 基本上我们创建一个类库项目,并在 AutoCAD 中使用命令 (NETLOAD) 加载 .dll。
因此,我们可以使用命令、“调色板”、用户控件、表单等...
AutoDesk 通过一些 dll 提供 API,在它们的程序目录中运行。 引用这些 dll 时,您只能在运行时调用 dll,同时在 AutoCAD 中加载您的应用程序(这是 AutoDesk 的许可安全)。
对我们来说,在开发过程中,这不是问题,我们需要在 AutoCAD 的上下文中进行可视化测试,因此我们只需设置 Debug Properties 以便它们启动 acad.exe 并使用 acad 中的脚本加载我们的 dll .exe 参数。
问题是,当尝试对我们的代码进行单元测试时,NUnit 或 mstest 没有在 AutoCAD 上下文中运行,它们也无法启动它。 有一个工具叫 Gallio,它提供了与 AutoCAD 的接口,因此它可以通过 IPC 和 Named Pipes 运行单元测试。
但是,对我来说,这个解决方案太麻烦了。我希望能够快速编写测试,而不必离开我心爱的 IDE。
那么,从“良好的设计观点”来看,什么是解决这个问题的好方法?我想我基本上需要一个不引用 AutoCAD dll 的可测试代码库和一个引用不可测试 AutoCAD dll 的不可测试代码库。
我确信有办法让它工作:(IOC、DI、适配器模式,..)我只是没有深入了解这些原则,因此我不知道哪条路线最适合我的目的和目标。
【问题讨论】:
标签: unit-testing design-patterns architecture autocad