是否可以在不运行 Revit 的情况下创建我自己的 Revit API 代码的单元测试,该代码与 Revit DB 模型交互。
如果是这样,如何实现。
我参与了一些提到的线程。我什至参与过一个项目,该项目有一个非常完善的 Revit 单元测试框架(很遗憾我不能分享)。
但这里是我可以告诉你的方法:你需要构建自己的基本框架来执行测试。它作为 Revit 内部的插件运行(您必须启动 Revit,选择插件,然后选择要运行的测试工具程序集)。之后,它很像 xUnit、MSTest 等。我认为我们有一些额外的测试属性,甚至可以将每个测试指向特定的测试模型。
整个事情的麻烦在于您必须启动 Revit,正如您所知,这可能需要一些时间(并且使该过程比在传统开发中使用单元测试方便得多)。在 Autodesk 决定进一步开放之前,这就是您所坚持的(除非您采用“Revit Python Shell”方法......我想我只是指传统的 .NET 语言)。
祝你好运...
Dynamo 项目包括Dynamo Revit 测试框架,它允许您在 Revit API 上运行 NUnit 测试。它处理日志文件的生成,以创建单独的 Revit 会话以单独进行测试(测试也可以作为一个 revit 会话中的夹具一起运行)。它目前面向 Dynamo,但很容易适应非 Dynamo 使用。作为Dynamo 项目的一部分,它是开源的。
此外,如果您对源代码进行了改进,请随时提出拉取请求。我们一直在寻找好的贡献。
您可以将 API 代码抽象为一个接口,然后在一组模拟对象上实现它以用于测试:
我不确定你能找到比这里 http://forums.augi.com/showthread.php?98536-Unit-testing-with-Revit-API 和这里 http://darenatwork.blogspot 描述的更多关于 Revit 单元测试的信息。 com/2010/11/unit-testing-revit-plugins_10.html
或者您可能会找到自己的方式来使用 Revit API 进行单元测试。
Jeremy Tammik 写了一篇关于这个主题的博文
http://thebuildingcoder.typepad.com/blog/2013/07/revit-add-in-unit-testing.html