无法在Visual Studio 2017 RC中运行XUnit测试

6

我正在尝试在 Visual Studio 2017 中使用新的基于 msbuild 的 netcoreapp1.0 xunit 项目模板进行单元测试,但一直无法成功。

需求是让单元测试在 Visual Studio 中(供开发人员使用)和在 CLI 中的 dotnet test 中(自动构建过程中)都能正常工作,但我无法将两者都稳定地运行起来。

以下是我的尝试:

在现有解决方案中创建一个新项目,并选择 .NET Core > xUnit Test Project

从 Visual Studio 中构建该项目,会出现默认测试并且测试成功。然后在 powershell 命令提示符下运行 dotnet test,结果如下:

 > dotnet test
 Test run for D:\...\bin\Debug\netcoreapp1.0\MyProj.dll(.NETCoreApp,Version=v1.0)
 dotnet exec needs a managed .dll or .exe extension. The application specified was 'C:\Program'

或者使用 csproj 文件运行 dotnet test:
 > dotnet test MyProject.csproj
 (same error as above)

 > dotnet test ..\MySolution.sln
 Couldn't find a project to run test from. Ensure a project exists in D:\...
 Or pass the path to the project

如果我添加 xunit.runner.console 或者 xunit.runner.msbuild 的nuget包,就会导致从Visual Studio内部停止运行单元测试。
我该如何同时让它们都起作用呢?
谢谢!

@tommed,你能否从Visual Studio命令提示符中构建/运行此代码?问题可能是因为VS 2017中的msbuild是应用程序本地的,这意味着有特殊的环境变量用于确定msbuild、.targets和类库的位置。 - Michael Braude
@MichaelBraude谢谢你。我也在_Developer Command Prompt_和_MSBuild Command Prompt_中尝试了相同的操作,但是仍然出现了相同的错误 - 不过想法不错! - tommed
虽然与.NET Core无关,但我作为评论发布此内容:在这里使用VS2017完整的.NET 4.5框架,遇到了同样的问题:找不到单元测试。我不得不从使用Nuget的一个项目中卸载并重新安装“xunit.runner.visualstudio”。然后重新构建解决方案,就可以找到测试了。希望这可以帮到你。 - Sharky
3个回答

7
您所遇到的问题存在于第三个预览版中,但在第四个预览版中已得到解决。当执行命令时,他们没有转义命令行,由于dotnet.exe默认安装在C:\Program Files\dotnet中,因此它总是无法正常工作。
如果您想继续使用预览3,最简单的解决方法是编辑系统的PATH环境变量,并用C:\Progra~1\dotnet替换C:\Program Files\dotnet

6

我知道这不是一个很好的答案,但是dotnet-test-xunit只支持project.json文件。VS 2017强制你切换到csproj文件。

我在xunit的Twitter feed上发现了这个信息: 如果你正在尝试在带有.NET Core的VS2017 RC中使用@xunit,请删除dotnet-test-xunit并改用xunit.runner.visualstudio 2.2 beta 4。


2
感谢您提供这些信息。我也得出结论,dotnet-test-xunit 会破坏VS2017 - xunit.runner.visualstudio nuget包已经安装,但是无法运行cli测试。 - tommed

2

最新的 RC.3 存在测试无法发现的问题,运行内置的测试资源管理器时发现输出内容显示缺少 Microsoft.DotNet.InternalAbstractions 1.0.0 的版本。这也是之前 .NET Core 版本存在的问题,解决方法相同:从 Nuget 安装该包。


这解决了我在使用xUnit测试时遇到的问题。Visual Studio 2017RC引入了大量错误,导致项目及其测试出现问题。 - Hekkaryk

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