Как научить 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"