Модульное тестирование библиотеки.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 смог запустить мои тесты.