0

我的问题与这个问题有关,但我以某种方式更进一步并使用 nunit 实现了一个测试框架。

当我在 Revit 中运行测试框架插件时,测试框架会以某种方式锁定测试程序集,从而无法重新编译测试程序集。为了解决这个问题,我尝试制作一个影子副本,以便 nunit 测试运行器在复制的程序集上运行。但是一旦我第一次运行测试,后续的测试运行就不能在更新的副本上运行。这就像测试运行器缓存 dll 并总是尝试在缓存的副本上运行测试。

所以每次更新测试程序集时,我都需要关闭重新打开 Revit 来运行测试,这真的很痛苦。我为 Revit 实施测试框架的主要原因是能够使用 Revit API 进行 BDD/TDD。

这是我如何运行测试的代码片段:

    TestPackage theTestPackage = new TestPackage(testDll);
    RemoteTestRunner testRunner = new RemoteTestRunner();
    testRunner.Load(theTestPackage);
    TestResult testResult = testRunner.Run(new NullListener());

有谁知道如何解决这个问题?

4

1 回答 1

1

您可以尝试加载程序集以使用该Assembly.Load(byte[])方法进行测试。我不确定您的测试运行程序是否可以处理此问题,但这将为您提供一个从内存中的字节流加载的程序集。因此,可以随时重新编译原始程序集文件,并且您可以根据需要加载任意多个此程序集的并发版本。它们都是独立的,具有不同的类型。

我使用 RevitPythonShell 脚本loadplugin.py的类似策略在运行时加载插件,然后运行它们进行测试。除了在 XAML 中定义的 WPF 控件外,这似乎工作得很好。我怀疑 XAML 解析器和加载器会保留类型的缓存,但由于时间限制,还无法对此进行调查。

于 2013-01-10T09:15:27.097 回答