Ответ 1
xUnit теперь имеет поддержку тестирования модулей PCL; http://xunit.github.io/
Я пытаюсь создать unit test переносимую библиотеку классов, которую я создал, и я хочу убедиться, что она проверена с тем же самым подкомпоном, что и для него.
В блоге Visual Studio ALM + Team Foundation Server структура MSTest unit test была преобразована в PCL в Visual Studio 2012 RC; однако я не могу создать переносимую библиотеку классов, а затем ссылаюсь на структуру MSTest в RTM VS2012.
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, которые учитывали это.)
xUnit теперь имеет поддержку тестирования модулей PCL; http://xunit.github.io/
Насколько я знаю, на данный момент нет библиотек PCL для интеграции.
Но я нашел этот проект на github, который кажется многообещающим и нацелен именно на то, что вам нужно:
https://github.com/jbtule/PclUnit
Он следует за тем же стилем unit test, что и Nunit, но также заимствовал некоторые вещи у XUnit, поэтому его довольно легко приспособить к нему.
В связи с этим вопросом в последнее время я попытался настроить новое решение, и теперь у меня есть Portable Class Library
, который я могу unit test. Я не помню, что именно я пробовал раньше, но вот что я сейчас работаю:
Portable Class Library
....Shared
Проект ...Shared
из универсального пустого, кроме файла App.xaml
, поэтому пока что он не используется.
Все проекты, содержащие UI, ссылаются на проект типа Portable Class Library
, и все они работают с использованием того же кода.
Проект unit test также ссылается на код из Portable Class Library
, я добавил ссылку обычным способом (щелкните правой кнопкой мыши по References
, Add reference
, а затем выберите проект PCL с Solution
- Projects
.
Структура решения показана на скриншоте ниже:
Я не совсем уверен в том, в чем проблема, когда я пытался заставить весь блок тестирования модулей PCL работать в прошлом году, но теперь он работает так, как должен.
Не стесняйтесь запрашивать дополнительную информацию, если это необходимо, я постараюсь помочь, если это возможно.
Портативная тестовая библиотека находится под 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], но не выполнит их.
У меня есть универсальное приложение для Windows Store и Windows Phone, содержащее один PCL с моими ViewModels. Я только что создал проект unit test и добавил viewmodel как "связанный файл". Это всего лишь небольшой тест, который проверяет строку в приветственном мире, но, похоже, работает.
Только время покажет, удовлетворяет ли это решение моим будущим требованиям тестирования.