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

问题描述 投票:0回答:9

任何人都可以帮助我让 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
9个回答
15
投票

最后,通过更改我的系统

PATH
env 解决了问题。变量从
C:\Program Files\dotnet\
C:\Progra~1\dotnet\
,如无法使用 Visual Studio 2017 RC 进行 XUnit 测试

中的回答

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


7
投票

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

5
投票

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

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

在命令提示符下运行

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

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


2
投票

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


0
投票

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

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


0
投票

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

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


0
投票

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

<TargetFramework>netcoreapp1.0</TargetFramework>

0
投票

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


0
投票

使用 SpecFlow 进行测试的注意事项。 如果您的解决方案有更多项目,则必须在每个 *.csproj 中包含此包引用

© www.soinside.com 2019 - 2024. All rights reserved.