Как выполнить модульную проверку операции суммирования, чтобы убедиться, что операция действительно суммируется? - PullRequest
1 голос
/ 24 октября 2011

У меня есть следующее свойство:

public double TotalHours
{
    get
    {
        return (from session in sessions
                let ts = session.End.Subtract(session.Start)
                select ts.TotalHours).Sum();
    }
}

Свойство должно суммировать все часы, проведенные во всех сеансах.
Что мне нужно проверить, чтобы убедиться, что свойство всегда суммирует все часы всех сеансов?

Ответы [ 2 ]

4 голосов
/ 24 октября 2011

Это в основном случай разработки соответствующих данных выборки.Например, вы можете попробовать тесты для:

  • Нет сеансов
  • Один сеанс
  • Несколько сеансов
  • Сеансы без времени началаили не время окончания
  • сеанс, в котором конец предшествует началу
  • сеанс, в котором конец равен началу

Возможно, у вас есть другие данные проверкичтобы убедиться, что «хитроумные» ситуации не возникают, но это те вещи, о которых я бы подумал 1018 *.

1 голос
/ 24 октября 2011

Я бы посоветовал вам высказать свои Session s для создания тестовых данных, описанных @Jon Skeet. Используя mocks, вы изолируете тестируемый код только от свойства TotalHours, а не от свойства и реализации Session.

Используя moq , вы можете сделать следующее, чтобы настроить тестовые данные, вызвать TotalHours и утверждать, что результатом является ожидаемое вами значение:

var data = new List<ISession>
{
    Mock.Of<ISession>(s => s.Start == DateTime.Parse("12:00 AM") && s.End == DateTime.Parse("12:10 AM")),
    Mock.Of<ISession>(s => s.Start == DateTime.Parse("1:00 AM") && s.End == DateTime.Parse("1:15 AM")),
    Mock.Of<ISession>(s => s.Start == DateTime.Parse("2:00 AM") && s.End == DateTime.Parse("2:30 AM"))
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...