【问题标题】:Unit testing a .NET Standard 1.6 library对 .NET Standard 1.6 库进行单元测试
【发布时间】:2017-05-12 01:04:15
【问题描述】:

我无法找到有关如何对 .NET Standard 1.6 类库(可以从 .NET Core 项目进行引用)进行单元测试的最新文档。

这是我的 project.json 在我的库中的样子:

{
  "supports": {},
  "dependencies": {
    "Microsoft.NETCore.Portable.Compatibility": "1.0.1",
    "NETStandard.Library": "1.6.0",
    "Portable.BouncyCastle": "1.8.1.2"
  },
  "frameworks": {
    "netstandard1.6": {}
  }
}

现在剩下的任务是能够创建某种可以进行单元测试的项目。目标是使用 xUnit,因为这似乎是 .NET Core 团队正在推动的。

我继续创建了另一个 .NET Portable 库项目,它的 project.json 如下所示:

{
  "supports": {},
  "dependencies": {
    "Microsoft.NETCore.Portable.Compatibility": "1.0.1",
    "NETStandard.Library": "1.6.0",
    "xunit": "2.2.0-beta4-build3444",
    "xunit.runner.visualstudio": "2.1.0"
  },
  "frameworks": {
    "netstandard1.6": {

    }
  }
}

我在该项目中的测试类如下所示:

using USB.EnterpriseAutomation.Security.DotNetCore;
using Xunit;

namespace Security.DotNetCore.Test
{
    public class AesEncryptionHelperTests
    {
        [Fact]
        public void AesEncryptDecrypt()
        {
            var input = "Hello world!";
            var encrypted = AesEncryptionHelper.AesEncrypt(input);
            var decrypted = AesEncryptionHelper.AesDecrypt(encrypted);

            Assert.Equal(input, decrypted);
        }
    }
}

当我继续构建该项目时,测试资源管理器看不到我的任何测试。

如何创建能够测试此库的单元测试?

【问题讨论】:

  • 有人在 VS 2017 RTM 中发现了这一点吗?当我尝试测试 NetStandard 库时,找不到我的测试。我引用的是 xunit 和 xunit.runner.visualstudio 的 2.2 版。

标签: c# .net .net-core xunit.net project.json


【解决方案1】:

我在 xUnit 的 GitHub 页面上发现了这个问题:https://github.com/xunit/xunit/issues/1032

正如 Brad Wilson 所解释的,NETStandard 库必须使用 dotnet 核心库或完整的 .Net Framework 库进行测试。

在我的例子中,我将我的单元测试库变成了一个完整的“经典桌面”库,并且测试资源管理器能够运行我的测试。

【讨论】:

    【解决方案2】:

    我目前有一个使用 xunit 2.1.0 和 dotnet-test-xunit 2.2.0-preview2-build1029 的工作项目。

    这是我的单元测试项目project.json

    {
      "dependencies": {
        "dotnet-test-xunit": "2.2.0-preview2-build1029",
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.0.0"
        },
        "MyProject.Library": {
          "target": "project",
        },
        "xunit": "2.1.0"
      },
      "description": "Unit tests",
      "frameworks": {
        "netcoreapp1.0": {
          "imports": "dotnet"
        }
      },
      "testRunner": "xunit"
    }
    

    这适用于命令行(通过 dotnet test)和 Visual Studio 2015 测试资源管理器。

    我认为 dotnet-test-xunit 已被弃用,但我不确定。在 project.json 消失后,以上所有内容都可能会发生变化,但今天有效。

    【讨论】:

    • Visual Studio 2017 RC 确实需要不同的设置,我昨天尝试过。
    • @LexLi 很高兴知道。我敢肯定,当我升级时,我将不得不再次弄清楚这一切。 :)
    • 我在此处附上了信息,docs.microsoft.com/en-us/dotnet/articles/core/preview3/tools/… 此链接(用于 SDK 预览 3)不会永远有效,但微软应该在未来某个地方始终在 docs.microsoft.com 提供更新版本。跨度>
    猜你喜欢
    • 2017-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多