VS 2017 未在 .NET Core 上发现测试

VS 2017 not discovering tests on .NET Core

任何人都可以帮助我让 VS2017 与 .NET Core 测试项目一起工作吗?

我尝试从 VS 2017 模板为 .NET Core 创建 MSTest 和 xUnit 单元测试项目。它们都不能在测试资源管理器中工作(未发现),但是项目文件夹中的 运行 dotnet test 工作正常。

重现步骤:

  1. 在 VS 2017 中创建新项目
  2. 选择 Unit Test Project (.NET Core)xUnit Test Project (.NET Core) 模板
  3. 实施一些任意单元测试
  4. 构建解决方案
  5. 转到文本浏览器并尝试 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