Работа с планировщиком событий с TDD и написанием тестового проекта для нижележащего класса.Метод теста для конструктора
Решил написать тестовые методы Конструктор логики Методы
public class TechDay
{
public Session MorningSlot { get; set; }
public Session EveningSlot { get; set; }
public TechDay()
{
this.MorningSlot = new Slot();
this.EveningSlot = new Slot();
this.MorningSlot.Sessions= new List<Session>();
this.EveningSlot.Sessions= new List<Session>();
this.ConfigureEventSettings();
}
protected virtual void ConfigureEventSettings()
{
CultureInfo provider = CultureInfo.InvariantCulture;
this.MorningSlot.StartTime = DateTime.ParseExact("9:00 AM", "h:mm tt", provider);
this.MorningSlot.EndTime = DateTime.ParseExact("12:00 PM", "h:mm tt", provider);
this.EveningSlot.StartTime = DateTime.ParseExact("1:00 PM", "h:mm tt", provider);
this.EveningSlot.EndTime = DateTime.ParseExact("5:00 PM", "h:mm tt", provider);
}
}
Тестовые
[TestMethod]
public void CheckMorningSlot()
{
TechDay techday=new TechDay();
Assert.IsNotNull(techday.MorningSlot);
}
[TestMethod]
public void CheckEveningSlot()
{
TechDay techday=new TechDay();
Assert.IsNotNull(techday.EveningSlot);
}
[TestMethod]
public void CheckEveningSlotSessions()
{
TechDay techday=new TechDay();
Assert.IsNotNull(techday.EveningSlot.Sessions);
}
[TestMethod]
public void CheckMorningSlotSessions()
{
TechDay techday=new TechDay();
Assert.IsNotNull(techday.MorningSlot.Sessions);
}
Нужно ли мне писать различные методы, чтобы проверить другую инициализации параметров в конструкторе? Также не то, что конструктор вызывает другой метод.
Каков наилучший способ написания методов тестирования для этого кода?
Виртуальный вызов метода в конструкторе - не очень хорошая идея. – Tilak
@ Тилак, я просто сделал этот метод виртуальным, потому что другое событие conf также может наследовать TechDay и изменить время начала и окончания. Пример: TechNights. Что может быть лучшим предложением? – Billa
Billa, если вы можете правильно вызвать порядок вызовов между базовым конструктором, производным конструктором и виртуальными методами изнутри конструктора и какие поля будут/не будут инициализироваться при каждом вызове, чем это, вероятно, нормально. –