【问题标题】:.NET Core 2.0 and xUnit doesn't run.NET Core 2.0 和 xUnit 无法运行
【发布时间】:2017-11-07 17:07:00
【问题描述】:

Visual Studio 2017 + .NET Core 2.0。我从模板创建了一个全新的 xUnit 测试项目:

项目(.csproj)文件:

    <Project Sdk="Microsoft.NET.Sdk">

      <PropertyGroup>
        <TargetFramework>netcoreapp2.0</TargetFramework>

        <IsPackable>false</IsPackable>
      </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0" />
    <DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" />
    <PackageReference Include="xunit" Version="2.3.1" />
    <PackageReference Include="xunit.runner.console" Version="2.3.1" />
  </ItemGroup>

    </Project>

测试

public class Class1
{
    [Fact]
    public void Test1()
    {
        Assert.Equal(1, 1);
    }
}

每当运行或调试测试时,我都会收到“不确定:测试未运行”。我错过了什么?

我下载了这个示例: https://github.com/xunit/xunit.integration

在构建 这个 解决方案时,我得到:

错误 MSB3073 命令“dotnet “C:\Users\supersuper.nuget\packages\xunit.runner.console\2.3.1\build..\tools\netcoreapp2.0\xunit.console.dll” "C:\Users\supersuper\Desktop\xunit.integration-master\console\v2x_netcoreapp20\bin\Debug\netcoreapp2.0\v2x_netcoreapp20.dll"" 退出代码 1. v2x_netcoreapp20 C:\Users\supersuper\Desktop\xunit.integration-master\console\v2x_netcoreapp20\v2x_netcoreapp20.csproj 13

Visual Studio 版本:

dotnet --version
2.0.2

是因为 ReSharper 吗?

【问题讨论】:

  • 尝试 xunit.analyzers 项目并运行那里的测试。您下载的项目 xunit.integration 不应在 .Net Core 上运行,因为它测试 xUnit VS 扩展的集成..
  • 好的,那么忘记示例。我要做的就是在 Core 2 中运行 xUnit。请参阅我的测试类
  • 可能是您使用的是旧版本的 VS 2017。请参阅我为当前 RTM v15.4.2 模板编辑的答案
  • 我正在运行 15.4.2 版 - 请参阅 Edit1
  • 尝试为 x86 和 x64 安装 .NET Core SDK 2.0。当您运行测试时,VS 默认选择 x86 架构,如果您缺少 .NET Core SDK 2.0,我猜这可能是一个原因。

标签: .net-core asp.net-core-2.0 xunit


【解决方案1】:

缺少一些依赖项,应添加这些依赖项以获得在 Visual Studio 2017 和控制台中运行测试的能力:

    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0" />
    <DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" />
    <PackageReference Include="xunit.runner.console" Version="2.3.1" />

我尚未验证是否需要第二个来支持 Visual Studio。尽管如此,我的测试从测试资源管理器运行并显示详细的运行结果。 vstest.descoveryengine.exe 存在一些问题,MSTest v2 项目不需要这些问题,但通常从控制台和测试资源管理器进行的测试都有效。

我已经从 Visual Studio 2017 v15.4.2 中的模板创建了一个 xUnit .NET Core 测试项目,一切都可以开箱即用。

项目看起来不同:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>

    <IsPackable>false</IsPackable>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.5.0-preview-20170810-02" />
    <PackageReference Include="xunit" Version="2.2.0" />
    <PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
  </ItemGroup>

</Project>

测试类:

using System;
using Xunit;

namespace XUnitTestProjectTmpl
{
    public class UnitTest1
    {
        [Fact]
        public void Test1()
        {

        }
    }
}

测试结果:

【讨论】:

  • 我已经复制了你的 csproj,但仍然没有 go = "Test not run"。它会找到测试但不会运行它们。你运行过 Assert 吗?
  • @ShaneKm R# Unit Test Runner 与内置的 VS runner 不同,xUnit 测试存在很多问题。所以这真的可能是因为 R#。
  • 已解决:这是因为 Resharper。通过 Test => Run Works! 运行测试。谢谢
猜你喜欢
  • 1970-01-01
  • 2018-02-20
  • 1970-01-01
  • 2018-05-27
  • 2018-04-21
  • 1970-01-01
  • 2018-02-15
  • 2020-12-03
相关资源
最近更新 更多