Я работаю с распределенной системой, в которой есть модульные и интеграционные тесты. Я пытаюсь сэкономить время и усилия по обслуживанию, повторно используя код между интеграцией и модульными тестами. Для этого я реализовал интерфейс и 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 #, но я считаю, что этот вопрос не зависит от языка.
У кого-нибудь есть идеи получше? Я делаю это неправильно?