VS 2017 未在 .NET Core 上发现测试
VS 2017 not discovering tests on .NET Core
任何人都可以帮助我让 VS2017 与 .NET Core 测试项目一起工作吗?
我尝试从 VS 2017 模板为 .NET Core 创建 MSTest 和 xUnit 单元测试项目。它们都不能在测试资源管理器中工作(未发现),但是项目文件夹中的 运行 dotnet test
工作正常。
重现步骤:
- 在 VS 2017 中创建新项目
- 选择
Unit Test Project (.NET Core)
或 xUnit Test Project (.NET Core)
模板
- 实施一些任意单元测试
- 构建解决方案
- 转到文本浏览器并尝试
Run All
此时输出 window 应该告诉您发现了 0 个测试
.csproj
文件:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp1.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0" />
<PackageReference Include="xunit" Version="2.2.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
</ItemGroup>
</Project>
如果我尝试从面向 .NET Framework(完整版,而非 .NET Core)的模板创建 MSTest 单元测试项目,它就成功了。
有什么想法吗?
我想我也经历过同样的行为。尝试构建您的解决方案,以便 VS 可以发现您的测试。否则请分享您的测试 csproj 文件以确保您引用正确的包。我的是:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp1.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0" />
<PackageReference Include="xunit" Version="2.2.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
</ItemGroup>
</Project>
更新: 我玩了一会儿,看起来 VS 没有 <OutputType>Exe</OutputType>
就找不到测试
更新 2: 也尝试将以下内容添加到 csproj,因为我看到 VS 在某些情况下会添加。
<ItemGroup>
<Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
</ItemGroup>
我遇到了同样的问题。我通过从 nuget 安装 "Microsoft.NET.Test.Sdk" 包来解决它。
最后通过更改我的系统PATH
env 解决了问题。从 C:\Program Files\dotnet\
到 C:\Progra~1\dotnet\
的变量,如
中的回答
感谢 Alexey 在评论中提出建议 :)
我遇到了这个问题,VS 2017 没有在 .NET Core 上发现 MSTest 单元测试。
测试输出仅报告发现了零个测试。
在命令提示符 运行 dotnet test MyProject.csproj -t
上,它提示我没有安装正确的 .NET Core 运行时来匹配项目的 RuntimeFrameworkVersion。
安装最新的 VS 2017 更新和 .NET Core 运行时解决了这个问题。
从 project.json
迁移到 csproj
后,我遇到了同样的问题。
并通过删除 net451
目标框架并仅保留 netcoreapp1.1
来解决它。现在它完美无缺,每次都能发现。
当然如果你需要很多框架目标你不应该这样做,只需使用 CLI 来测试它们...
这可能是由于处理器架构的项目设置不一致。测试项目目标必须匹配测试默认处理器架构。
勾选
我也遇到了这个问题,通过确保我的项目和测试项目在 .csproj 文件中具有相同的目标框架版本来解决这个问题
<TargetFramework>netcoreapp1.0</TargetFramework>
当有多个测试项目和相同的输出目录以及 update 时,还要确保 *.csproj 文件中没有 mixed PackageReference versions测试项目的包 特别是 MSTest.TestAdapter 以及 MSTest.TestFramework
任何人都可以帮助我让 VS2017 与 .NET Core 测试项目一起工作吗?
我尝试从 VS 2017 模板为 .NET Core 创建 MSTest 和 xUnit 单元测试项目。它们都不能在测试资源管理器中工作(未发现),但是项目文件夹中的 运行 dotnet test
工作正常。
重现步骤:
- 在 VS 2017 中创建新项目
- 选择
Unit Test Project (.NET Core)
或xUnit Test Project (.NET Core)
模板 - 实施一些任意单元测试
- 构建解决方案
- 转到文本浏览器并尝试
Run All
此时输出 window 应该告诉您发现了 0 个测试
.csproj
文件:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp1.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0" />
<PackageReference Include="xunit" Version="2.2.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
</ItemGroup>
</Project>
如果我尝试从面向 .NET Framework(完整版,而非 .NET Core)的模板创建 MSTest 单元测试项目,它就成功了。
有什么想法吗?
我想我也经历过同样的行为。尝试构建您的解决方案,以便 VS 可以发现您的测试。否则请分享您的测试 csproj 文件以确保您引用正确的包。我的是:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp1.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0" />
<PackageReference Include="xunit" Version="2.2.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
</ItemGroup>
</Project>
更新: 我玩了一会儿,看起来 VS 没有 <OutputType>Exe</OutputType>
更新 2: 也尝试将以下内容添加到 csproj,因为我看到 VS 在某些情况下会添加。
<ItemGroup>
<Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
</ItemGroup>
我遇到了同样的问题。我通过从 nuget 安装 "Microsoft.NET.Test.Sdk" 包来解决它。
最后通过更改我的系统PATH
env 解决了问题。从 C:\Program Files\dotnet\
到 C:\Progra~1\dotnet\
的变量,如
感谢 Alexey 在评论中提出建议 :)
我遇到了这个问题,VS 2017 没有在 .NET Core 上发现 MSTest 单元测试。
测试输出仅报告发现了零个测试。
在命令提示符 运行 dotnet test MyProject.csproj -t
上,它提示我没有安装正确的 .NET Core 运行时来匹配项目的 RuntimeFrameworkVersion。
安装最新的 VS 2017 更新和 .NET Core 运行时解决了这个问题。
从 project.json
迁移到 csproj
后,我遇到了同样的问题。
并通过删除 net451
目标框架并仅保留 netcoreapp1.1
来解决它。现在它完美无缺,每次都能发现。
当然如果你需要很多框架目标你不应该这样做,只需使用 CLI 来测试它们...
这可能是由于处理器架构的项目设置不一致。测试项目目标必须匹配测试默认处理器架构。
勾选
我也遇到了这个问题,通过确保我的项目和测试项目在 .csproj 文件中具有相同的目标框架版本来解决这个问题
<TargetFramework>netcoreapp1.0</TargetFramework>
当有多个测试项目和相同的输出目录以及 update 时,还要确保 *.csproj 文件中没有 mixed PackageReference versions测试项目的包 特别是 MSTest.TestAdapter 以及 MSTest.TestFramework