单元测试.NET Standard 1.6库

时间:2016-12-27 18:27:26

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

我无法找到有关如何对.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);
        }
    }
}

当我继续构建该项目时,Test Explorer没有看到我的任何测试。

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

2 个答案:

答案 0 :(得分:9)

我发现问题发布在xUnit&#39的GitHub页面上:https://github.com/xunit/xunit/issues/1032

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

在我的情况下,我使我的单元测试库成为一个完整的经典桌面"库和Test Explorer能够运行我的测试。

答案 1 :(得分:5)

我目前有一个使用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消失之后,上述所有内容都可能会发生变化,但今天仍有效。