Модульное тестирование библиотеки .NET Standard 1.6

У меня возникли проблемы с поиском актуальной документации по unit test библиотеке классов .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 не видит никаких моих тестов.

Как мне создать unit test, способный протестировать эту библиотеку?

Ответ 1

В настоящее время у меня есть рабочий проект с использованием xunit 2.1.0 и dotnet-test-xunit 2.2.0-preview2-build1029.

Это мой project.json для проекта unit test:

{
  "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 уйдет, но это работает сегодня.

Ответ 2

Я нашел проблему на странице xUnit GitHub здесь: https://github.com/xunit/xunit/issues/1032

Как объясняет Брэд Уилсон, библиотеки NETStandard должны быть протестированы либо с помощью сетевой библиотеки dotnet, либо с полной библиотекой .Net Framework.

В моем случае я сделал библиотеку unit test полной библиотекой "классического рабочего стола", а Test Explorer смог запустить мои тесты.