首页 文章

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

提问于
浏览
18

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

此时,“输出”窗口应该告诉您已发现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 回答

  • 14

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

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

  • 1

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

    UPDATE: 我玩了一下,看起来VS没有 <OutputType>Exe</OutputType> 找不到测试

    UPDATE 2: 尝试在csproj中添加以下内容,因为我看到VS在某些情况下添加了 .

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

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

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

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

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

  • 0

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

  • 0

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

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

  • 0

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

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

  • 2

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

    <TargetFramework>netcoreapp1.0</TargetFramework>
    
  • 0

    当具有多个测试项目和相同的输出目录以及 update the packages of test project 尤其是MSTest.TestAdapter以及MSTest.TestFramework时,还要确保* .csproj文件中没有 mixed PackageReference versions

相关问题