2009-10-04 5 views
1

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

Спасибо.

+0

что делает MyWrapper делать? Существует Setup & TearDown, который вы можете использовать до/после вызова любого вызова вашего тестового метода. – shahkalpesh

+0

Это не то, что я после –

ответ

3

Если вы используете 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

+0

Ничего себе, отмечая это как * * ответ, так как это то, что я искал. Благодаря! –

2

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

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^