Как научить SpecFlow добавлять дополнительные атрибуты NUnit в мой тестовый класс

SpecFlow великолепен - и он очень помогает нам проводить правильное интеграционное тестирование.

Мне было интересно узнать, есть ли способ указать SpecFlow добавить дополнительные атрибуты NUnit к тестовому классу, который он создает в файле кода функции.

Прямо сейчас мой тестовый класс генерируется примерно так:

[System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "1.8.1.0")]
[System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[NUnit.Framework.TestFixtureAttribute()]
[NUnit.Framework.DescriptionAttribute("Some action description here")]
public partial class MySampleFeature
{  
   ......
}

Есть ли способ в SpecFlow сказать ему добавить дополнительный атрибут NUnit для определения категории теста - например, так:

[System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "1.8.1.0")]
[System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[NUnit.Framework.TestFixtureAttribute()]
[NUnit.Framework.DescriptionAttribute("Some action description here")]
[NUnit.Framework.Category("LongRunningTests")]   <== add this "Category" attribute
public partial class MySampleFeature
{  
   ......
}

Добавление этого вручную к сгенерированному кодовому фону расточительно - в следующий раз, когда SpecFlow повторно сгенерирует этот кодовый блок, я должен помнить, что делал это снова (и скорее всего, я забуду).

И если эта возможность еще не присутствует в SpecFlow - как ходатайствовать об этом, чтобы добавить?:-)

2 ответа

Решение

На самом деле NUnit.Framework.Category Атрибут уже поддерживается, если вы используете теги (ищите раздел тегов) в вашей функции или сценариях. Так что если вы напишите

@LongRunningTests
Feature: MySampleFeature

это будет генерировать правильное Category приписывать.

Однако, если вы хотите иметь дополнительные пользовательские атрибуты, вам нужно написать собственный генератор генератора с реализацией IUnitTestGeneratorProvider Интерфейс и зарегистрироваться с помощью unitTestProvider's generatorProvider атрибут в разделе спецификации вашего конфига.

Вы можете найти источник встроенных реализаций на github.

Чтобы добавить хороший ответ @nemesv, добавьте:

Функция @LongRunningTests: MySampleFeature

Чтобы выполнить из консоли, сделайте это:

nunit3-console.exe myTests.dll - где "cat==LongRunningTests"

Другие вопросы по тегам