20

谁能帮我让 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 单元测试项目,它可以工作。

有任何想法吗?

4

8 回答 8

15

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

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

于 2017-03-16T18:50:25.640 回答
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>
于 2017-03-12T13:22:04.110 回答
5

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

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

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

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

于 2017-05-17T12:31:51.393 回答
2

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

于 2017-03-15T21:08:48.333 回答
0

从迁移project.jsoncsproj. 并通过删除net451目标框架并仅保留来解决它netcoreapp1.1。现在它的作品很完美,每次都能发现。

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

于 2017-07-03T11:10:05.213 回答
0

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

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

于 2017-11-23T11:15:02.463 回答
0

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

<TargetFramework>netcoreapp1.0</TargetFramework>
于 2018-01-02T17:31:12.457 回答
0

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

于 2018-08-07T21:32:53.090 回答