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からの完全なコンソール出力を次に示します。
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ランナーの使用を強制すると想定しています。これを変更するには(少なくともVS2015およびVS2017で)、Test
> Test Settings
> Default Processor Architecture
> X64
に移動します。
また、runsettingsファイルで実行ターゲットを設定することもできます。次に、そのファイルを選択する必要があります。これにより、ソリューションがより安定します。これのみを設定するrunsettingsファイルは次のようになります。
これを有効にするには、次の図に示すようにします。
テストメニュー(1)から選択すると、メニュー(2)で選択したものとして追加され、再構築すると、テストがテストエクスプローラー(3)に表示されます。
Runsettingsファイルを使用すると追加のボーナスがあり、それを使用すると、TFSビルドシステムで適切に実行されます。私はその問題についてブログ投稿を書きました、参照してください http://hermit.no/how-to-control-the-selection-of-test-runner-in-tfsvsts-making-it-work-with -x86x64-selected-targets /
テストを実行できず、それが問題の1つであることがわかりました。私のTestFixtureはinternalであることがわかりました。 publicに切り替えるだけで、私の問題は解決しました。
上記の他のすべての応答の試行に失敗した後、以下が私にとってうまくいきました:
私の場合、.NETプロジェクトとソリューションはマウントされたドライブにあります(.NET開発にはMacBookとParallelsを使用しています)。マウントには、NUnitが「テスト」を読み込もうとした/ bin/debugおよび/ bin/releaseの場所も含まれていますDLLから。
修正は、ソリューション/プロジェクトファイルをWindowsイメージのC:ドライブに移動することでした。テストはすぐに発見されました。
どうやら共有/マウントされた場所はその好みに合わせていませんでした。マウントは永続的で、Windowsイメージのすべてのユーザーに対して読み取り/書き込み可能であるため、理由はわかりません。ファイル権限の問題か、NUnitディスカバリロジックを実行しているユーザー/プロセスがマウント全体にアクセスできないのではないかと思います。
ユニットテストメソッドを作成するときに、このエラーが発生しました。そして、依存するdllの1つがロードするのに欠落していた根本原因に気づきました。このエラー(「NUnitは.dllを読み込めませんでした」)は、テストメソッドコードを変更して実行しようとした後、[出力]( "テスト")ウィンドウに表示されました。依存dllのnugetパッケージを更新した後、nunitはテストプロジェクトdllの選択を開始し、テストケースが実行されました。