Как заставить VS2010 распознавать мои тесты, сгенерированные SpecFlow? - PullRequest
7 голосов
/ 12 августа 2010

Я настроил Specflow для целевого фреймворка MsTest (вместо NUnit), указав его следующим образом в app.config моей библиотеки классов 'specs':

<configSections>
    <section name="specFlow"
   type="TechTalk.SpecFlow.Configuration.ConfigurationSectionHandler, TechTalk.SpecFlow"/>
</configSections>

<specFlow>
 <unitTestProvider name="MsTest.2010" />
</specFlow>

Так что, как только оно будет на месте, я вижу, что мои тестовые приборы правильно создаются с помощью специального инструмента Specflow, с правильными TestClassAttribute () и методами, и т. Д.

[System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "1.3.3.0")]
[System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute()]
...

Класс specs создается, но теперь я не могу запустить тесты, используя Test -> Run -> All Tests in Solution в Visual Studio 2010 на моем компьютере Vista 64. Почему VS не распознает их как допустимые для запуска тесты?

Ответы [ 3 ]

8 голосов
/ 20 января 2011

Согласно Dror Helper и Alex Duggleby вам нужно добавить следующую строку в ваш файл .csproj:

<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

Добавьте его после элемента FileAlignment и перезагрузите проект. Теперь это должен быть проект MS Test, и вы получите функциональность MS Test в контексте этого проекта. Направляющие означают:

  • {3AC096D0-A1C2-E12C-1390-A8335801FDAB} - Тестовый проект
  • {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - Библиотека классов C #
4 голосов
/ 12 августа 2010

Мне пришлось воссоздать проект как Test Project, а не просто Class Library - потому что я начал разработку с NUnit и SpecFlow, я создал библиотеку классов vanilla для хранения своих спецификаций, у которых были украшены атрибуты NUnit. , Я подумал, что могу просто изменить app.config этого существующего проекта, указав на среду mstest и прекратить использовать NUnit, но VS2010 никогда не распознавал тесты, несмотря на правильное создание заглушек с помощью специального инструмента specflow.

Итак ... Я добавил новый Test Project в свое решение, переместил весь свой код спецификации в этот новый проект, затем перекомпилировал, и альт VS2010 распознает тесты. Я уверен, что есть GUID, который он ищет в XML файла .csproj или что-то, что говорит ему подключить среду тестирования, но я не копал так далеко.

Надеюсь, это кому-нибудь поможет.

0 голосов
/ 13 ноября 2012

Чтобы изменить шаблон проекта библиотеки классов на тестовый проект, измените .csproj и добавьте следующую строку:

<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

к первому элементу группы свойств:

<PropertyGroup>
    <ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
...