[英]NUnit is not releasing the .dll for my unit test project
我有NUnit GUI運行器,每次構建時都在我的單元測試程序集上運行測試。 問題是,當我嘗試構建時,NUnit正在使用Debug文件夾中的.dll,這阻止了它的構建,這阻止了自動測試運行。 有沒有解決的辦法?
每當您構建解決方案時。 我建議你關閉裝有你的.dll的Nunit。 在卸載后嘗試構建,然后您的構建將成功。
當Nunit正在使用你.dll。 它不會讓你的構建成功。
我剛才有類似的問題,我的最終解決方案是從使用NUnit GUI運行器辭職,直接從代碼運行它們。
在我的項目中,我引用了那些新構建的dll以及nunit.core和nunit.utils所需的NUnit庫。 代碼本身很簡單:
TestResult ExecuteTests(string testAssemblyPath) {
CoreExtensions.Host.InitializeService();
TestPackage testPackage = new TestPackage(testAssemblyPath);
testPackage.BasePath = Path.GetDirectoryName(testAssemblyPath);
RemoteTestRunner testRunner = new RemoteTestRunner();
testRunner.Load(testPackage);
TestResult testResult = testRunner.Run(new NullListener(), TestFilter.Empty, true, LoggingThreshold.Warn);
testRunner.Unload();
CoreExtensions.Host.UnloadService();
return testResult;
}
TestResult
對象非常強大。 除其他外,它包含所有結果,子結果,測試本身等。為了分析它們,您可以創建一個簡單的解析器或使用NUnit庫給出的一種可能性。 我最喜歡的是XmlResultWriter
但也有其他人可用。 所有這些都可以在nunit.util.dll中找到。
不幸的是,這仍然會阻止加載的dll被重建。 我通過在單獨的AppDomain中運行它並在測試完成運行后卸載此域來避免此問題。 然后dll很好地釋放了,無論你想要什么,你都可以使用它。
我可以建議一個略有不同的方法,但與@UvarajGopu一樣....
只要您使用的Visual Studio高於“Express”版本,並且您將UnitTests編寫在單獨的項目中(通常與正在測試的項目一起使用“.UnitTests”后綴),請執行以下操作:
現在您只需按F5(開始調試)即可構建項目,並為您啟動NUnit GUI。 這具有額外的優勢,如果您的測試失敗,您可以添加斷點,並逐步使用調試器(無需手動附加調試器)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.