Visual Studio 2017 + .Net Core 2测试不可执行

7

我正在为一个私人项目设置一些单元测试,由于我不介意使用确切的运行器,所以我尝试了 NUnit、XUnit 和 MStest,但迄今为止都没有成功。

经过一些研究,我克隆了官方的 Microsoft 存储库:https://github.com/dotnet/docs/blob/master/samples/core/getting-started/unit-testing-using-nunit/PrimeService.Tests/PrimeService_IsPrimeShould.cs 但是这些测试也无法执行。在这样做时,输��结果中会出现以下错误:

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)

我还查阅了一些 Stack Overflow 的答案,例如Visual Studio 2017 中未发现单元测试如何在 Visual Studio 2017 中运行 NUnit 测试?,但是它们都没有解决问题。

我的 Visual Studio 2017 版本目前为 15.6.0,我还在使用 ReSharper。看来这是一个本地环境问题,不幸的是,我没有找到任何关于这个问题的提示。是否有人有想法,如何解决这个问题?

4个回答

9
我在将一个大型解决方案从NUnit迁移到XUnit后遇到了完全相同的问题。
我尝试创建一个只包含单个虚拟测试的新项目,结果也出现了这个问题,说明这是环境问题。
最终我发现Git在PATH环境变量中添加了双引号,像这样:
...;"C:\Program Files (x86)\Git\bin";...
不幸的是,我的路径非常长(3600个字符),所以Windows GUI不允许我更改它,因为它超过了2047个字符。
我通过更改存储在Windows注册表中的路径来进行了更正。具体位置是Computer\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment。
我可以通过重新添加Path环境变量中的引号来随意重现这种行为。
我认为旧版本的Git存在一个bug,已经很久没有更新了,导致引用位置被添加到路径环境变量中,而新版本的更新没有更改它。我怀疑NUnit测试运行程序对引号有容忍性,而XUnit测试运行程序则没有。
希望我的经验能够帮助您解决问题。

嗯,我认为在我的情况下确实是因为更新的原因,但我错过了git变量,这也是非常有价值的信息。 - Matthias Müller
1
在我的情况下,是Java Runtime在路径中添加了双引号。谢谢。 - Karel Kral
这也帮助了我。我在Java路径周围加了双引号。 - Raha
Java也有同样的情况。但是,我无法编辑注册表并删除引号,因为它会出现一些写入错误。当我通过进入“控制面板”> “系统”>“高级设置”窗口来探索这个问题时,该条目中没有显示引号。所以我只需编辑该条目而不进行任何修改然后保存. 这解决了VS2017中xUnit测试的问题。 - Arjun_TECH
我不得不重新启动,但是从PATH变量中删除了四个双引号似乎解决了问题!谢谢! - HenningNT

2
如果有人遇到“0个测试找到——路径中的无效字符”这个问题,我也经历了这个问题,但是我解决了它,只是花费了两天来找到解决方法。 解决方法非常简单,但当时并不明确。 解决方案:(Windows - 电脑)
  • 打开此电脑 -> 属性 -> 高级系统设置 -> 环境变量 -> 用户变量
  • 滚动到“路径”,单击“编辑”,然后单击“编辑文本…”
  • 检查整个文本,并删除任何双引号、小于号和大于号,然后单击“确定”。
  • 对系统变量路径执行相同的操作。
  • 返回Visual Studio,构建您的解决方案并运行所有测试。
在完成这些步骤后,测试就应该被找到了。

有些类似的技巧对我也起了作用。我不得不从我的环境变量中删除一些不必要的javapath。非常感谢@jtate,您帮我省去了两天的麻烦。 - kjosh

1
在我的情况下,当我将VS2017更新到版本15.6.4时,问题消失了。

我添加了Git变量并进行了更新,现在它可以工作了。奇怪的是,我在网上没有找到任何关于这个错误的信息。 - Matthias Müller
确实很奇怪。在发布说明中,他们提到了一些有关单元测试的修复,但没有一个是关于这个问题的。也许他们改动了某些东西,为我们修复了这个问题。 - FyCyka LK

1
在我的情况下,VS 2019中没有环境路径的问题...所以我有两个选择,要么重新安装(不确定是否有效),要么在不同的机器上使用VS,我在不同的机器上使用了VS,它工作了...奇怪的是,当运行测试用例时,VS IDE会出现一些问题...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接