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

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

Решение

У меня в настоящее время есть рабочий проект, использующий 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 исчезнет, ​​но сегодня это работает.

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

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

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

Другие вопросы по тегам