VS 2017没有发现.NET Core上的测试

时间:2017-03-12 13:14:55

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

任何人都可以帮助我让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
  6. 此时,“输出”窗口应该告诉您已发现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单元测试项目,那么它可以工作。

    有什么想法吗?

8 个答案:

答案 0 :(得分:14)

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

中所述

感谢Alexey在评论中提出建议:)

答案 1 :(得分:5)

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

答案 2 :(得分:3)

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

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

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

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

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

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

答案 6 :(得分:0)

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

<TargetFramework>netcoreapp1.0</TargetFramework>

答案 7 :(得分:0)

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