簡體   English   中英

NUnit 加載失敗 DLL

[英]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

我在用

  • Visual Studio 社區 2013
  • NUnit 適配器 3.4.0.0
  • N單元 3.4.1

奇怪的是,我有另一個項目,它的設置方式與這個項目相同,而且工作正常。

我還下載並安裝了 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 -目標/

我無法執行我的測試並發現這是問題之一。 事實證明,我的TestFixtureinternal 只是將其切換為公開解決了我的情況。

在嘗試上述所有其他響應失敗后,以下對我有用:

就我而言,.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM