任何人都可以帮助我让 VS2017 处理 .NET Core 测试项目吗?
我尝试从 VS 2017 模板为 .NET Core 创建 MSTest 和 xUnit 单元测试项目。它们在测试资源管理器中都不起作用(未发现),但是从项目文件夹运行
dotnet test
可以正常工作。
重现步骤:
Unit Test Project (.NET Core)
或 xUnit Test Project (.NET Core)
模板Run All
此时,输出窗口应该告诉您发现了 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 单元测试项目,它会起作用。
有什么想法吗?
最后,通过更改我的系统
PATH
env 解决了问题。变量从 C:\Program Files\dotnet\
到 C:\Progra~1\dotnet\
,如无法使用 Visual Studio 2017 RC 进行 XUnit 测试中的回答
感谢 Alexey 在评论中提出建议:)
我想我也经历过同样的行为。尝试构建您的解决方案,以便 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>
我在 VS 2017 中遇到了这个问题,没有在 .NET Core 上发现 MSTest 单元测试。
测试输出仅报告它发现了零个测试。
在命令提示符下运行
dotnet test MyProject.csproj -t
时,它建议我没有安装正确的 .NET Core 运行时来匹配项目的 RuntimeFrameworkVersion。
安装最新的 VS 2017 更新和 .NET Core 运行时解决了该问题。
我也有同样的问题。我通过安装 nuget 中的“Microsoft.NET.Test.Sdk”包解决了这个问题。
从
project.json
迁移到 csproj
后,我遇到了同样的问题。
并通过删除 net451
目标框架并仅保留 netcoreapp1.1
来解决它。现在它工作得很完美,每次都能发现。
当然,如果你需要很多框架目标,你不应该这样做,只需使用 CLI 来测试它们......
可能是由于处理器架构的项目设置不一致。测试项目目标必须与测试默认处理器架构匹配。
我也遇到了这个问题,通过确保我的项目和测试项目在 .csproj 文件中具有相同的目标框架版本来解决这个问题
<TargetFramework>netcoreapp1.0</TargetFramework>
当有多个测试项目和相同的输出目录时,还要确保 *.csproj 文件中没有 混合 PackageReference 版本,并且还要更新测试项目的包,特别是 MSTest.TestAdapter 以及 MSTest.TestFramework
使用 SpecFlow 进行测试的注意事项。 如果您的解决方案有更多项目,则必须在每个 *.csproj 中包含此包引用