【问题标题】:XUnit Tests no longer discovered in .Net Core 1.1.Net Core 1.1 中不再发现 XUnit 测试
【发布时间】:2017-04-25 03:21:11
【问题描述】:

我刚刚将我的项目升级到 .Net Core 1.1,我的所有测试现在都没有被发现。在旧版本(.Net Core 1.0)中运行良好

以下是XUnit生成的VS 2015 Output Window中的消息

------ Discover test started ------
Discovering tests in 'C:\TW\websites2016\AssetsDB\src\Tests\project.json' ["C:\Program Files\dotnet\dotnet.exe" test "C:\TW\websites2016\AssetsDB\src\Tests\project.json" --output "C:\TW\websites2016\AssetsDB\src\Tests\bin\Debug\netcoreapp1.1" --port 61778 --parentProcessId 7316 --no-build]
'test-xunit' returned '-532462766'.
========== Discover test finished: 0 found (0:00:01.7697049) ==========

project.json 中的代码

{
  "version": "1.0.0-*",
  "testRunner": "xunit",

  "dependencies": {
    "Microsoft.EntityFrameworkCore.SqlServer": "1.1.0",
    "AssetsDB": { "target": "project" },
    "xunit": "2.2.0-beta4-build3444",
    "dotnet-test-xunit": "2.2.0-preview2-build1029",
  },

  "frameworks": {
    "netcoreapp1.1": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.1.0"
        }
      },
      "imports": [
        "dotnet5.4",
        "portable-net451+win8"
      ]
    }
  }
}

我的样本测试:

namespace Tests
{
    public class QueryPagingAssetsTest
    {
        [Fact]
        public void should_return_PagingAssetItems()
        {
             Assert.True(xxxxx);
        }
    }
}

我有什么遗漏吗?我是否需要进行任何更改以使其与 .Net Core 1.1 兼容?

更新:project.json的工作版本

您需要添加 InternalAbstractions 库。如果您关注 Brad 的链接,它会告诉您使用“xunit.runner.visualstudio”而不是“xunit.runner.visualstudio”。但是 AFAIK,它还没有工作(截至 2016 年 9 月 12 日)

"dependencies": {
    "AssetsDB": { "target": "project" },
    "Microsoft.DotNet.InternalAbstractions": "1.0.1-beta-003206",
    "Microsoft.EntityFrameworkCore.SqlServer": "1.1.0",
    "xunit": "2.2.0-beta4-build3444",
    "dotnet-test-xunit": "2.2.0-preview2-build1029"
    //"xunit.runner.visualstudio": "2.2.0-beta4-build1194"
  },

【问题讨论】:

    标签: c# asp.net-core xunit.net asp.net-core-1.1


    【解决方案1】:

    使用 ASP.NET Core 1.1、xUnit 和 ReSharper 创建单元测试

    我现在的环境:

    • Windows 10 64 位
    • Visual Studio Enterprise 2017 15.1 (26403.7) 版本
    • ReSharper 2017.1.2

    在我使用 dotnet new xunit 创建项目后,我能够创建测试并使用 ReSharper Unit Test Session 运行它。

    .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>
    
      <ItemGroup>
        <Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
      </ItemGroup>
    
    </Project>
    

    UnitTest.cs

    using Xunit;
    
    namespace ErpWebApi.UnitTests
    {
       public class UnitTest1
       {
            [Fact]
            public void TestFail()
            {
                Assert.Equal(2, 3);
            }
    
            [Fact]
            public void TestSucess()
            {
                Assert.Equal(2, 2);
            }
        }
    }
    

    结果:

    See image only with hyperlink, no rep

    参考Microsoft

    【讨论】:

      【解决方案2】:

      我正在使用 NUnit,以下解决了我的问题:安装 Microsoft.DotNet.InternalAbstractions,关闭 Visual Studio,删除 project.lock.json,打开 Visual Studio,编译并运行测试

      【讨论】:

        【解决方案3】:

        "Microsoft.DotNet.InternalAbstractions": "1.0.0" 添加到您的依赖项中,dotnet-test-xunit 在 .NET Core 1.1 中存在问题(并且显然在基于 csproj 的新工具推出时将被淘汰)。查看https://github.com/xunit/xunit/issues/1031#issuecomment-261374279

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-04-21
          • 1970-01-01
          • 2018-02-20
          • 2017-09-17
          • 1970-01-01
          • 2018-05-16
          • 1970-01-01
          • 2019-08-10
          相关资源
          最近更新 更多