Это то, что мы обсуждали снова и снова, и мнения людей, похоже, сильно отличаются от этого.Написание дополнительных модульных тестов после рефакторинга TDD
Основной вопрос, когда вы делаете TDD, следует добавить дополнительные модульные тесты после этапа рефакторинга цикла. Я не говорю о вашем следующем тесте, чтобы начать следующий цикл, а скорее проверять все изменения, которые возникли из-за рефакторинга.
Это может быть лучше всего объяснено примером реальной жизни. После зеленого цикла TDD мы имеем следующий код:
public bool ShouldVerifyDomain
{
get
{
return this.Orders.SelectMany(x => x.Items).Any(x => x.Product.RequiresDomainVerification);
}
}
Теперь я смотрю на это и думаю, хммм, что LINQ заявление может быть немного аккуратнее, немного легче читать, не нарушают Деметра довольно так много, давайте реорганизуем это. Поэтому я создаю следующие на Order
:
public bool HasItemsThatRequireDomainVerification
{
get
{
return this.Items.Any(x => x.Product.RequiresCascadeDomainVerification);
}
}
И модифицирована ShouldVerifyDomain
к:
public bool ShouldVerifyDomain
{
get
{
return this.Orders.Any(x => x.HasItemsThatRequireDomainVerification);
}
}
ОК, что выглядит немного лучше, я счастлив с этим. Перейдем к следующему тесту в моем списке ... но ... подождите, мы теперь тестируем свойство HasItemsThatRequireDomainVerification
через свойство на другом объекте .... это истинный модульный тест или я должен добавить тест (s) для непосредственного тестирования HasItemsThatRequireDomainVerification
.
Как я себя чувствую? Я не вижу, чтобы это придавало большую ценность. Я думаю, что это добавит бремени обслуживания пакета, потребует времени и не даст нам больше уверенности в том, что касается будущих изменений.
Что он может дать нам? «Документация» открытого интерфейса Order
.
Мысли?
Почему downvote? – Skyp