【问题标题】:VS 2017 not discovering tests on .NET CoreVS 2017 未在 .NET Core 上发现测试
【发布时间】:2017-08-02 12:55:35
【问题描述】:

谁能帮我让 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

此时输出窗口应该会告诉您发现了 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 单元测试项目,它可以工作。

有什么想法吗?

【问题讨论】:

标签: unit-testing .net-core visual-studio-2017 test-explorer


【解决方案1】:

最后,通过更改我的系统PATH env 解决了问题。从C:\Program Files\dotnet\C:\Progra~1\dotnet\ 的变量,如Can't get XUnit tests working with Visual Studio 2017 RC 中所回答的那样

感谢 Alexey 在 cmets 中提出的建议 :)

【讨论】:

  • 谢谢!我正在运行 VS2017 Pro 15.1,这是唯一解决我问题的问题。
【解决方案2】:

我想我也经历过同样的行为。尝试构建您的解决方案,以便 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>

更新:我玩了一会儿,看起来没有&lt;OutputType&gt;Exe&lt;/OutputType&gt;VS 找不到测试

更新 2: 尝试将以下内容添加到 csproj,因为我看到 VS 在某些情况下会添加。

<ItemGroup>
  <Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
</ItemGroup>

【讨论】:

  • 我没有提到它,但我确实建造了,不幸的是,建造没有帮助。我用我的.csproj 文件编辑了我的帖子。与您的唯一区别是那里的OutputType 标签。我尝试添加它,但没有任何区别。
  • @valorl 尝试添加 OutputType 并重建。
  • 所以我重新启动了我的电脑,用一个干净的 xunit 测试项目制作了一个干净的解决方案,添加了&lt;OutputType&gt;Exe&lt;/OutputType&gt;,重建并尝试了Run All。没有成功......甚至让VS以管理员身份运行。我会尝试重新安装也许它会有所帮助
  • 重装后还是没有成功...我的VS版本是Community 2017, VisualStudio/15.0.0-RTW+26228.4
  • 如果有帮助,添加OutputType 行时的事件,我在bin\debug\netcoreapp1.1 中看不到任何.exe 文件
【解决方案3】:

我遇到了这个问题,因为 VS 2017 没有在 .NET Core 上发现 MSTest 单元测试。

Tests 输出仅报告它发现了零测试。

在命令提示符下运行 dotnet test MyProject.csproj -t 时,它提示我没有安装正确的 .NET Core 运行时以匹配项目的 RuntimeFrameworkVersion。

安装最新的 VS 2017 更新和 .NET Core 运行时解决了该问题。

【讨论】:

  • 感谢 DGreen。我也遇到了 VS 2017 发现单元测试的问题。虽然我引用了正确的框架,但您对上述命令的提及帮助我发现我没有将单元测试类访问修饰符设置为 public!
  • 谢谢,我运行命令并收到警告说测试类也没有标记为公共,我添加了公共关键字,现在我可以看到我的测试了。
【解决方案4】:

我有同样的问题。我通过从 nuget 安装“Microsoft.NET.Test.Sdk”包解决了这个问题。

【讨论】:

  • 我添加了 Microsoft.NET.Test.Sdk 并没有解决我的问题。
  • 我来这里是为了分享完全相同的东西。我在一个解决方案中的几个项目中有一个项目神秘地不会显示测试。最后,这就是解决它的方法。所以我要 +1。
  • 当我的项目从 .NET Framework v4.6.1 切换到 .NET Core 3.1 后我的测试停止显示时,这对我有用
【解决方案5】:

project.json 迁移到csproj 后,我遇到了同样的问题。 并通过删除net451 目标框架并仅留下netcoreapp1.1 来解决它。现在它的作品很完美,每次都能发现。

当然,如果您需要许多框架目标,您不应该这样做,只需使用 CLI 来测试它们...

【讨论】:

    【解决方案6】:

    这可能是由于处理器架构的项目设置不一致。测试项目目标必须与测试默认处理器架构相匹配。

    查看https://stackoverflow.com/a/47454276/2700303

    【讨论】:

      【解决方案7】:

      我也遇到了这个问题,通过确保我的项目和测试项目在 .csproj 文件中具有相同的目标框架版本来解决这个问题

      <TargetFramework>netcoreapp1.0</TargetFramework>
      

      【讨论】:

        【解决方案8】:

        当有多个测试项目和相同的输出目录时,还要确保在 *.csproj 文件中没有混合的 PackageReference 版本,并更新测试项目的包 strong> 尤其是 MSTest.TestAdapter 以及 MSTest.TestFramework

        【讨论】:

          猜你喜欢
          • 2018-04-21
          • 2018-06-12
          • 2017-09-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-08-13
          • 1970-01-01
          • 2018-07-12
          相关资源
          最近更新 更多