问题
I have a webappliction with a separate test-project using NUnit to run unittests. When my test-project is trying to discover tests I run into the following exception:
An exception occurred while test discoverer 'NUnit3TestDiscoverer' was loading tests. Exception: Could not load file or assembly 'nunit.engine, Version=3.7.0.0, Culture=neutral, PublicKeyToken=2638cd05610744eb' or one of its dependencies. The system cannot find the file specified.
This is of course a very common error, but I can't find a reference to this particular assembly anywhere or what other dependency is actually causing the issue. Another thing is that I currently have 3.9.0
installed of NUnit instead of the mentioned 3.7.0
.
I have already tried cleaning and rebuilding the solution and restored all Nuget packages and clearing the obj
directory didn't help either.
回答1:
This is happening quite frequently with the latest versions of Visual Studio. We are not sure why, but the cause is an incomplete copy of the test adapter in the Visual Studio cache. The fix is to delete the cached copy and restart Visual Studio.
The folder you want to delete is C:\Users\username\AppData\Local\Temp\VisualStudioTestExplorerExtensions\NUnit3TestAdapter.3.x.x
depending on your username and the version.
See https://github.com/nunit/nunit3-vs-adapter/issues/261 and http://hermit.no/how-to-resolve-cases-of-visual-studio-no-tests-appearing/
回答2:
Seems in project file you have mentioned reference of 3.7.0 as GAC, and that dll is not available in GAC which is hopefully causing the failure.
回答3:
In my case it was
An exception occurred while invoking executor 'executor://nunit3testexecutor/': Could not load file or assembly 'nunit.engine, Version=3.9.0.0
And the problem is: in my test project I have an import of NUnit3TestAdapter.3.13.0
<Import Project="..\..\..\packages\NUnit3TestAdapter.3.13.0\build\net35\NUnit3TestAdapter.props" Condition="Exists('..\..\..\packages\NUnit3TestAdapter.3.13.0\build\net35\NUnit3TestAdapter.props')" />
And in another project I have NUnit.Engine.3.10.0 referenced. but NUnit3TestAdapter.3.13.0 has Nunit.Engine.3.9.0 in the package.
\packages\NUnit3TestAdapter.3.13.0\build\net35
So, the solution was to downgrade Nunit.Engine in another project to 3.9 version.
来源:https://stackoverflow.com/questions/48526149/how-to-fix-could-not-load-file-or-assembly-nunit-engine-version-3-7-0-0