Задать вопрос
kid-programmer
@kid-programmer

TDD, много Assert`ов

Всем здрасте, вопрос: в книгах и статьях в интернете по TDD говорят, что нужно начинать с асcертов и желательно с одного и писать на один тест как можно меньше. Уменя такой пример, разрабатываю класс, который выдает даты исходя из заданных параметров (еженедельное расписание). По TDD начинаю с написание теста и с аcсерта на вывод нужных дат.

//Assert 
            Assert.AreEqual(result[0].Start, DateTime.Parse("04.12.13 08:00:00"));
            Assert.AreEqual(result[0].Finish, DateTime.Parse("06.12.13 00:00:00"));

            Assert.AreEqual(result[1].Start, DateTime.Parse("11.12.13 08:00:00"));
            Assert.AreEqual(result[1].Finish, DateTime.Parse("13.12.13 00:00:00"));
               
           //..... итд еще 100500 асcертов на два месяца


Подскажите, пожалуйста, что-то не так или все нормально? Как правильно вообще подойти к этой задаче, с чего правильнее начать?
  • Вопрос задан
  • 2702 просмотра
Подписаться 4 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 1
    1 неделя
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 2
    1 неделя
    Далее
Решения вопроса 1
xakpc
@xakpc
full-stack .net developer, CEO Leecero.com
Используйте входящие параметры
Пример с использованием NUnit'а
[TestCase(0, "04.12.13 08:00:00", "06.12.13 00:00:00")]
[TestCase(1, "04.12.13 08:00:00", "06.12.13 00:00:00")]
public void Test123(int i, DateTime s, DateTime e)
{
     Assert.That(result[i].Start, Is.EqualTo(DateTime.Parse(s)));
     Assert.That(result[i].Finish,Is.EqualTo( DateTime.Parse(e)));                 
}


* поправил пример чтобы он действительно был из NUnit
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
обычно данные организуют в массив, обходят его и ассертят. увы с юнит тестированием в .NET не знаком. Но если вас смущает именно большое количество ассертов - то в этом нету ничего страшного. Вы можете потом отрефакторить ваши тесты что бы они не делали лишних ассертов.
Ответ написан
Комментировать
@Gilga
Разработать и тестировать каждой одной функции. Вызывать 100500 раз одной функции ничего не дают результата.

Предполагаю у вас метод на входе какой-то даты и какой-то параметр, на выходе получаем дату, по-логически, не должна раньше, чем исходной даты.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы