2014-11-15 3 views
0

мы пишем много единичных тестовых примеров для нашего нашего требования, и я вижу рисунок ниже при подготовке данных. Мы отправляем одно сущность, которая имеет около 20 атрибутов, и из них 12-15 являются общими и остальные значения должны быть изменены в соответствии с требованиемНужна помощь | Единичный тест | Гибкая предварительная подготовка данных

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

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

, но некоторые из того, как я упал, это не очень хороший образец и искал какой-то лучший образец здесь, который более гибкий и ремонтопригоден

Могут у нас есть класс Helper, который XML данные, как класс и будет иметь дополнительный атрибут для сценария и получить данные по сценарию, но все это, кажется, не ремонтопригодно

Может кто дать некоторые предложения по дизайну

ответ

1

Вы можете реализовать некоторый статический метод t hat создает экземпляр объекта по умолчанию. Этот метод может быть частью самого объекта, метода расширения или частного метода вашего модульного тестового класса - независимо от того, что вы предпочитаете.

Как это:

public class Person 
{ 
    // Properties... 

    public static Person GetDefaultInstance() 
    { 
     return new Person() 
     { 
      // Set default properties here... 
     }; 
    } 
} 

Затем, вы можете добавить некоторые беглые методы API и использовать их, чтобы перезаписать свойства по умолчанию:

public Person LivesAt(string address) 
{ 
    Address = address; 
    return this; 
} 

Таким образом, вы можете инициализировать объект под тест, как это :

var person = Person.GetDefaultInstance() 
        .LivesAt("5th Avenue") 
        .WorksAt("Google"); 

Таким образом, становится ясно, какие свойства экземпляра по умолчанию вы являетесь ch для этого конкретного модульного теста.

+0

Спасибо, Сергей .. – Rajesh

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