![](/img/trans.png)
[英]Unable to load DLL 'SQLite.Interop.dll' with nHibernate in NUnit
[英]NUnit failed to load DLL
嘗試在 Visual Studio 中運行單元測試時收到以下錯誤消息:
NUnit failed to load w:\Repos\trading.tools\Trading.Tools.Test\bin\x64\Debug\Trading.Tools.Test.dll
我在用
奇怪的是,我有另一個項目,它的設置方式與這個項目相同,而且工作正常。
我還下載並安裝了 NUnit 3.4.1。 當我跑步時
nunit3-console.exe Trading.Tools.Test.dll
一切正常。 任何想法我能做什么?
非常感謝康斯坦丁
編輯 #1
這是嘗試運行所有測試時來自 Visual Studio 的完整控制台 output。
Test run will use DLL(s) built for framework Framework45 and platform X86. Following DLL(s) will not be part of run:
Trading.Tools.Test.dll, Trading.Tools.dll are built for Framework Framework45 and Platform X64.
Go to http://go.microsoft.com/fwlink/?LinkID=236877&clcid=0x409 for more details on managing these settings.
NUnit Adapter 3.4.0.0: Test discovery starting
NUnit failed to load w:\Repos\trading.tools\Trading.Tools.Test\bin\x64\Debug\Trading.Tools.Test.dll
Assembly contains no NUnit 3.0 tests: w:\Repos\trading.tools\Trading.Tools\bin\x64\Debug\Trading.Tools.dll
NUnit Adapter 3.4.0.0: Test discovery complete
如您所見,很明顯 NUnit 需要 x86 構建,但我是為 x64 平台構建的。 再一次,如果我使用nunit3-console.exe
執行它,我的 x64 構建工作得很好。
我在csproj
文件中看到的是這樣的:
<Reference Include="nunit.framework, Version=2.6.4.14350, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\NUnit.3.4.1\lib\net45\nunit.framework.dll</HintPath>
</Reference>
這里奇怪的是它指定使用Version=2.6.4.14350
但引用 3.4.1 dll。
所以從這一點開始的下一個問題是如何讓 NUnit 執行我的 x64 構建? 有任何想法嗎?
我有一個類似的問題,關鍵是 Visual Studio 中的Test Runner聲明只測試 x86 程序集。 我由此假設它會強制使用 x86 NUnit runner。 要更改此設置(至少在 VS2015 和 VS2017 中),請轉到Test
> Test Settings
> Default Processor Architecture
> X64
。
您還可以在 runsettings 文件中設置執行目標。 然后您必須選擇該文件。 這應該使解決方案更穩定。 僅設置此項的運行設置文件可能如下所示:
要啟用它,如下圖所示:
當您從測試菜單 (1) 中選擇它時,它將被添加為菜單 (2) 中的選定項,然后重建將使測試出現在測試資源管理器中 (3)
使用 runsettings 文件還有一個額外的好處,那就是它可以在 TFS Build 系統上正常運行,如果你使用它。 我寫了一篇關於這個問題的博客文章,見http://hermit.no/how-to-control-the-selection-of-test-runner-in-tfsvsts-making-it-work-with-x86x64-selected -目標/
我無法執行我的測試並發現這是問題之一。 事實證明,我的TestFixture是internal 。 只是將其切換為公開解決了我的情況。
在嘗試上述所有其他響應失敗后,以下對我有用:
就我而言,.NET 項目和解決方案位於已安裝的驅動器上(我使用 MacBook 和 Parallels 進行 .NET 開發)。 掛載還包含 NUnit 試圖從中讀取“測試”DLL 的 /bin/debug 和 /bin/release 位置。
修復方法是將解決方案/項目文件移動到我的 Windows 映像的 C: 驅動器。 測試很快就被發現了。
顯然,共享/安裝位置不合其意。 我不知道為什么,因為安裝是永久性的,並且對於 Windows 映像上的所有用戶來說都是可讀/可寫的。 我懷疑文件權限問題,或者運行 NUnit 發現邏輯的用戶/進程無法訪問整個掛載。
我在編寫單元測試方法時碰巧遇到這個錯誤。 並注意到缺少加載依賴的 dll 之一的根本原因。 修改測試方法代碼並嘗試運行后,此錯誤(“NUnit 無法加載 .dll”)顯示在輸出(“測試”)窗口中。 更新依賴 dll 的 nuget 包后,nunit 開始選擇測試項目 dll 並執行測試用例。
今天我也遇到了這個問題(在基於 .NET Framework 4.8 的 NUnit 項目上)。 我的解決方案是還安裝 Microsoft.NET.Test.Sdk 包。
要找到根本原因,嘗試使用 NUnit CLI 運行測試可能會有所幫助。
在我的例子中,CLI 記錄了我在 Visual Studio 中沒有看到的綁定失敗。 修復后,我的測試通過 CLI 和 VS 正確運行。
我在 a.Net 6.0 Asp.Net 解決方案中遇到了這個錯誤,這就是我解決它的方法。
它只發生在一個測試無法運行的測試項目中,其他測試項目在測試資源管理器和調試中運行良好。
未能檢測到的測試有“測試未運行”:
在Output是報錯:
NUnit 適配器 4.3.1.0:啟動 NUnit 的測試發現無法加載 [dll 路徑]
[dll 路徑] 中沒有可用的測試
我所做的是注釋掉每個 class 並將它們一一帶回,直到測試停止運行。 然后隨着失敗的 class 在 [Test] 方法上放置一個斷點。
如果你不能達到斷點,那么它在這個類 [SetUp] 中失敗了。 在 [SetUp] 中放置一個 BreakPoint 並使用 F11 離開方法的邊緣,即 F11 離開最后的大括號..
然后你會得到一個提示,說它無法加載哪個 DLL。
在我的例子中是“無法加載 DLL Microsoft.AspNetCore.Mvc.Core”
通過 Package Manager 引用 DLL 解決了問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.