Resharper runs UnitTest from different location
When I run unit tests with Visual Studio it works fine, because it runs from project directory where all assemblies are. But when I run it with resharper it goes with error on
var services = Assembly.Load("SomeAssembly");
with error
Could not load file or assembly 'SomeAssembly' or one of its dependencies. The system cannot find the file specified..
So i've tried
var path = Assembly.GetExecutingAssembly().Location;
and it's not project one. It's
C:\Users\*UserName*\AppData\Local\Temp\TestResults\...\Out\
and there is no 'SomeAssembly'. How do I configure resharper correctly or collect all assemblies like Visual Studio does?
It happens with unit tests but not with NUnit, any ideas?
Resharper shadow copies assemblies for testing by default. If you turn off shadow-copy, it will run in the bin folder and the test should pass. Here are some instructions on turning it off.
In the documentation for NUnit's Gui Test Runner settings has the following note about Shadow Copy
Note: If you are tempted to disable shadow copy in order to access files in the same directory as your assembly, you should be aware that there are alternatives. Consider using the Assembly.Codebase property rather than Assembly.Location.
Here is an example of using the Assembly.Codebase property
private string AssemblyLocation()
{
var assembly = Assembly.GetExecutingAssembly();
var codebase = new Uri(assembly.CodeBase);
var path = codebase.LocalPath;
return path;
}
I had the same problem, resharper test runner was in C:\ whereas the actual built dlls and solution were on another drive. The solution was to untick "Use Legacy Runner" in the MSTest settings page in resharper options.