2014-02-11 1 views
1

Я тестирую различные серверы, которые имеют ту же модель, которые уже тестировались модульными тестами. Теперь я хочу протестировать реальные серверы (не только общую модель).Используйте тот же TestClass с различным базовым классом

При тестировании общей модели я создал поддельный общий сервер с поддельным адаптером, который был определен в базовом тестовом классе, и все тестовые классы наследуют от него. Это сделано более ста тестов.

Теперь мне нужно использовать те же классы тестов, но с различными базовыми классами (для разных реальных серверов). Они используют одни и те же данные тестирования и имеют одинаковые результаты. Они отличаются некоторым внутренним подходом.

Можно ли как-то вызывать все тесты столько раз, сколько количество серверов, каждый раз с различным базовым тестовым классом (тип сервера и конструктор)?

пример:

[TestClass] 
public class GeneralServerTests : BaseServer 
{ 
    [TestMethod] 
    public void IsAlive_ChecksInteraction_ReturnsTrue() 
    { 
     Assert.IsTrue(GeneralServer.Adapter.IsAlive()); 
    } 
    ... 
} 

Базовый класс испытаний

[TestClass] 
public abstract class BaseServer 
{ 
    protected Server GeneralServer; 

    [TestInitialize] 
    public void Setup() 
    { 
     //here I assign the Server constructor, 
    } 
} 

Поэтому мне нужно вызвать класс GeneralServerTests с различными серверами.

Надеюсь, вы понимаете, что я имею в виду :)

любое решение?

+0

я получаю то, что вы пытаетесь сказать, но в целом блок тестирование не должно вовлекать сервер каким-либо образом (отдельно, от ку rse, с сервера сборки). Вы должны тестировать пути кода, а не сервер. Если вы не можете что-то нужно переделать. Если ваша логика зависит от сервера, возможно, вам нужен какой-то рефакторинг, чтобы сделать ваш серверный класс более общим, с разницей в строках подключения. Знак того, что что-то сложно или беспорядочно тестировать, не означает, что вы недостаточно хорошо тестируете, это означает, что тестируемый код недостаточно хорошо написан. Это не всегда так, но это справедливое предположение. – Magus

ответ

0

Хорошо, я решил его с помощью

[DataSource ("Microsoft.VisualStudio.TestTools.DataSource.CSV", | DataDirectory | \ ArchiveTestingData.csv», "ArchiveTestingData # CSV", DataAccessMethod.Sequential)]

, где написана вся необходимая информация о адаптерах.

Теперь все тесты запускать стольких раз, сколько многие адаптеры находятся в файле.

0

Если вы интерпретируете наследование с использованием концепции «есть», прочитав предложение: «GeneralServerTests IS a BaseServer», то это, похоже, не имеет большого смысла. Поэтому я думаю, что ваша тестовая модель наследования, вероятно, нуждается в небольшом обзоре и рефакторинге.

Теперь, что касается работы один и тот же тест против различных входов, вы должны при испытаниях управляемых данными:

http://msdn.microsoft.com/en-us/library/ms182527.aspx

Вы можете использовать источник данных, чтобы указать информацию о целевом сервере и настроить тестовый код ,

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

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