Подтвердить что ты не робот

Как создать сборку unit test для .NET Portable Class Library?

Я пытаюсь создать unit test переносимую библиотеку классов, которую я создал, и я хочу убедиться, что она проверена с тем же самым подкомпоном, что и для него.

В блоге Visual Studio ALM + Team Foundation Server структура MSTest unit test была преобразована в PCL в Visual Studio 2012 RC; однако я не могу создать переносимую библиотеку классов, а затем ссылаюсь на структуру MSTest в RTM VS2012.

  • Просмотр в диалоговом окне "Ссылки" показывает мне, что компоненты модуля тестирования не зарегистрированы как совместимые с PCL.
  • Добавление справочной ссылки GAC в файл проекта в Microsoft.VisualStudio.QualityTools.UnitTestFramework приводит к ошибке, вызванной ссылкой, не найденной.
  • Добавление ссылки на прямую сборку вручную на C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ReferenceAssemblies\v4.0\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll дает предупреждение о сборке, в котором говорится, что сборка UnitTestFramework ссылается на несовместимую версию mscorlib.

Я нашел (благодаря раннему ответу), что существует тип проекта Unit Test Library (Windows Store apps), который ссылается на другую сборку MSTest в C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0\ExtensionSDKs\MSTestFramework\11.0\References\CommonConfiguration\neutral\Microsoft.VisualStudio.TestPlatform.UnitTestFramework.dll. Этот тип проекта создает небольшое приложение для Windows Store без приложения UI... в комплекте с манифестом и всем. Это также не позволяет мне указать, какие рамки я планирую - это, по-видимому, только для приложений Windows Store.

Под потенциально ошибочным предположением, что я должен тестировать проекты Portable Library Library с unit test сборками, которые нацелены на одно и то же подмножество рамок, как на библиотеку под тестом...

Как создать сборку unit test для .NET Portable Class Library?

(Я открыт для других фреймворков, которые также нацелены на PCL, но я просто не знаю других решений, кроме MSTest, которые учитывали это.)

4b9b3361

Ответ 1

xUnit теперь имеет поддержку тестирования модулей PCL; http://xunit.github.io/

Ответ 2

Насколько я знаю, на данный момент нет библиотек PCL для интеграции.

Но я нашел этот проект на github, который кажется многообещающим и нацелен именно на то, что вам нужно:

https://github.com/jbtule/PclUnit

Он следует за тем же стилем unit test, что и Nunit, но также заимствовал некоторые вещи у XUnit, поэтому его довольно легко приспособить к нему.

Ответ 3

В связи с этим вопросом в последнее время я попытался настроить новое решение, и теперь у меня есть Portable Class Library, который я могу unit test. Я не помню, что именно я пробовал раньше, но вот что я сейчас работаю:

  • Обновление Visual Studio Premium 2013 4
  • Один проект типа Portable Class Library
  • Один проект Windows Forms
  • Одно универсальное приложение, состоящее из одного Windows, одного телефона Windows и проекта ....Shared
  • Проект unit test

Проект ...Shared из универсального пустого, кроме файла App.xaml, поэтому пока что он не используется.

Все проекты, содержащие UI, ссылаются на проект типа Portable Class Library, и все они работают с использованием того же кода.

Проект unit test также ссылается на код из Portable Class Library, я добавил ссылку обычным способом (щелкните правой кнопкой мыши по References, Add reference, а затем выберите проект PCL с Solution - Projects.

Структура решения показана на скриншоте ниже:

введите описание изображения здесь

Я не совсем уверен в том, в чем проблема, когда я пытался заставить весь блок тестирования модулей PCL работать в прошлом году, но теперь он работает так, как должен.

Не стесняйтесь запрашивать дополнительную информацию, если это необходимо, я постараюсь помочь, если это возможно.

Ответ 4

Портативная тестовая библиотека находится под SDK Windows 8, расположенной здесь (для меня):

C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0\ExtensionSDKs\MSTestFramework\11.0\References\CommonConfiguration\neutral\Microsoft.VisualStudio.TestPlatform.UnitTestFramework.dll

Вы увидите, что у него есть класс Assert и необходимые атрибуты [TestXXX]. Если я создам проект Portable Library и добавлю ссылку на эту сборку, Visual Studio Test Explorer покажет тесты, отмеченные атрибутом [TestMethod], но не выполнит их.

Ответ 5

У меня есть универсальное приложение для Windows Store и Windows Phone, содержащее один PCL с моими ViewModels. Я только что создал проект unit test и добавил viewmodel как "связанный файл". Это всего лишь небольшой тест, который проверяет строку в приветственном мире, но, похоже, работает.

Только время покажет, удовлетворяет ли это решение моим будущим требованиям тестирования.