Можно ли изменить способ запуска модульных тестов? - PullRequest
1 голос
/ 04 октября 2009

Я предполагаю, что текущая семантика модульного тестирования включает в себя фактический вызов метода, то есть, если у меня есть метод MyTest(), то это то, что вызывается. У меня такой вопрос: возможно ли каким-то образом изменить конвейер выполнения тестов (желательно без перекомпиляции тестового прогона), чтобы, скажем, вместо прямого вызова метода он вызывался через предоставляемую мной оболочку (т. Е. MyWrapper(MyTest))

Спасибо.

Ответы [ 2 ]

3 голосов
/ 04 октября 2009

Если вы используете MbUnit, то есть много вещей, которые вы можете настроить, определив пользовательские атрибуты.

Самый простой способ сделать это - создать подкласс TestDecoratorAttribute и переопределить методы SetUp, TearDown или Execute, чтобы обернуть их дополнительной логикой по вашему выбору.

Однако, если вам нужно более точное управление, вы можете вместо этого создать подкласс TestDecoratorPatternAttribute и переопределить метод DecorateTest с помощью логики для добавления дополнительных действий теста или действий экземпляра теста.

Например, атрибут MbUnit [Repeat] работает, заключая в себе действие запуска тела теста (которое запускает все фазы теста) с циклом и некоторой дополнительной бухгалтерией для повторного запуска теста.

Вот код для RepeatAttribute: http://code.google.com/p/mb-unit/source/browse/trunk/v3/src/MbUnit/MbUnit/Framework/RepeatAttribute.cs

2 голосов
/ 04 октября 2009

Это зависит от того, как инфраструктура модульного тестирования обеспечивает возможности перехвата и расширения.

Большинство фреймворков (MSTest, NUnit и т. Д.) Позволяют вам определять методы Setup и Teardown, которые гарантированно будут работать до и после теста.

xUnit.NET имеет более продвинутые механизмы расширяемости, где вы можете определять пользовательские атрибуты, которые вы можете использовать для украшения ваших методов тестирования, чтобы изменить способ их вызова. Например, есть атрибут TheoryAttribute, который позволяет вам определять параметризованные тесты.

Я не знаю MBUnit, поэтому я не могу сказать, поддерживает ли он эти сценарии или нет.

...