Можно ли повторно использовать код для интеграции и модульных тестов?

Я работаю с распределенной системой, в которой есть модульные и интеграционные тесты. Я пытаюсь сэкономить время и усилия по обслуживанию, повторно используя код между интеграцией и модульными тестами. Для этого я реализовал интерфейс и 2 класса :поддельный и настоящий. Поддельный класс возвращает некоторые заглушки данных, а настоящий класс делает несколько вызовов других распределенных служб.

Текущая структура моих проектов

/BaseTest              
   interface IFoo
-------------------------------------
/UnitTest
   class FakeFoo : IFoo

   [TestFixture]
   class FooTest {...} //uses FakeFoo
-------------------------------------
/IntegrationTest
   class RealFoo : IFoo

   [TestFixture]
   class FooTest {...} //uses RealFoo

Я хочу каким-то образом повторно использовать код для обоих тестов, поэтому, если у меня есть тест

[Test]
public void GetBarIsNotNullTest()
{
    var foo = IoC.Current.Resolve<IFoo>();
    Bar actual = foo.GetBar();
    Assert.IsNotNull(actual);   
}

Я хочу, чтобы этот тест выполнялся с обеими реализациями:RealFooи FakeFoo. До сих пор я думал о копировании -и вставке тестов между проектами /UnitTest и /IntegrationTest , но это звучит неправильно.

Система написана на C #, но я считаю, что этот вопрос не зависит от языка.

У кого-нибудь есть идеи получше? Я делаю это неправильно?

5
задан oleksii 25 July 2012 в 13:22
поделиться