Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Visual Studio 2017 + .Net Core 2 Tests not executable

I'm trying to set up some unit tests for a private project. Since I don't mind the exact runner, I tried NUnit, XUnit and MStest, but none worked so far.

After some research, I cloned the official Microsoft repository here :https://github.com/dotnet/docs/blob/master/samples/core/getting-started/unit-testing-using-nunit/PrimeService.Tests/PrimeService_IsPrimeShould.cs But these tests can't be executed as well. When doing so, I get the following error in the output:

System.ArgumentException: Illegal characters in path. at System.IO.Path.CheckInvalidPathChars(String path, Boolean checkAdditional) at System.IO.Path.Combine(String path1, String path2) at Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Helpers.DotnetHostHelper.TryGetExecutablePath(String executableBaseName, String& executablePath) at Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Helpers.DotnetHostHelper.GetDotnetPath() at Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Hosting.DotnetTestHostManager.GetTestHostProcessStartInfo(IEnumerable1 sources, IDictionary2 environmentVariables, TestRunnerConnectionInfo connectionInfo) at Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client.ProxyOperationManager.SetupChannel(IEnumerable`1 sources, CancellationToken cancellationToken) at Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client.ProxyDiscoveryManager.DiscoverTests(DiscoveryCriteria discoveryCriteria, ITestDiscoveryEventsHandler2 eventHandler)

I also checked out several SO answers like Unit Tests not discovered in Visual Studio 2017 or How to run NUnit tests in Visual Studio 2017?, but none of them fixed the problem.

My Visual Studio 2017 Version is currently 15.6.0 and I'm also using ReSharper. It seems like this is a local environmental problem, unfortunately, I didn't find any hints regarding that problem. Has anyone a idea, how that problem could be solved?

like image 793
Matthias Müller Avatar asked Mar 17 '18 14:03

Matthias Müller


2 Answers

I had exactly the same problem after moving from NUnit to XUnit on a large solution.

I tried creating a new project that contained just a single dummy test. This also exhibited the problem, meaning it was environmental.

I eventually discovered Git had placed double quotes around its entry in the PATH environment variable, like this:

...;"C:\Program Files (x86)\Git\bin";...

Unfortunately, my path was very long (3600 chars), so the Windows GUI would not let me change it as it was more then 2047 chars.

I was able to correct it by changing the Path stored in the Windows Registry at Computer\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment

I was able to reproduce the behaviour at will by re-adding the quotes to the Path environment variable.

I think there was a bug with an older version of Git I had installed (long ago) which added the quoted locate to the path environment variable, and newer updates never changed it. I suspect the NUnit test runner was tolerant of the quotes, while the XUnit test runner is not.

I hope my experience helps with your issue.

like image 111
Raymond Wilson Avatar answered Nov 13 '22 17:11

Raymond Wilson


Just in case someone still has the same issue of "0 Tests Found -- Invalid Character in path". I was experiencing it but I was able to solve it, however, it took me two days to find the solution. The solution is very simple but at the time it was not clear to the surface. Solution: (Windows - PCs)

  • Open This PC -> Properties -> Advanced system settings -> Environment Variable -> User variables
  • Scroll to the "path" and click Edit and then click "Edit text..."
  • check the whole text and remove any double quotes, <> if they are available and click OK.
  • Do the same with System variables path.
  • Head back to Visual Studio, build your solution and Run All tests.

After these steps, the tests should be found this time.

like image 2
Simon Magabe Avatar answered Nov 13 '22 18:11

Simon Magabe