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