2016-12-27 4 views
12

У меня возникли проблемы с поиском актуальной документации по модулю тестирования библиотеки классов .NET Standard 1.6 (на которую можно ссылаться из проекта .NET Core).Модульное тестирование библиотеки .NET Standard 1.6

Вот что мой 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 переносимой библиотеки, которая имеет 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 не видит ни одного из моих тестов.

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

+0

Кто-нибудь это понял в VS 2017 RTM? Когда я пытаюсь протестировать библиотеку NetStandard, мои тесты не могут быть найдены. Я ссылаюсь на версию 2.2 xunit и xunit.runner.visualstudio. –

ответ

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 Test Explorer.

Я считаю, что dotnet-test-xunit устарел, но я не уверен. Все вышеперечисленное, скорее всего, изменится после того, как project.json уйдет, но это работает сегодня.

+0

Visual Studio 2017 RC требует другой настройки, которую я пробовал вчера. –

+0

@LexLi Полезно знать. Я уверен, что мне придется все это выяснить, когда я обновляюсь. :) –

+2

Я прикрепил информацию здесь, https://docs.microsoft.com/en-us/dotnet/articles/core/preview3/tools/dotnet-test. Эта ссылка (для предварительного просмотра SDK 3) не будет работать вечно, но Microsoft должна иметь обновленную версию всегда на https://docs.microsoft.com где-то в будущем. –

6

Я нашел этот вопрос, размещенный на странице GitHub XUnit здесь: https://github.com/xunit/xunit/issues/1032

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

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

Смежные вопросы