Предположим, у меня есть такая функция:
public void AddEntry(Entry entry)
{
if (entry.Size < 0)
throw new ArgumentException("Entry size must be greater than zero");
DB.Entries.Add(entry);
}
И соответствующий юнит-тест:
[TestMethod]
[ExpectedException(typeof(ArgumentException), "Entry size must be greater than zero")]
public void AddEntry_TermSizeLessThanZero_ThrowException()
{
Entry e = new Entry(-5);
AddEntry(e);
}
А затем я реорганизую код проверки:
public void AddEntry(Entry entry)
{
Validate(entry);
DB.Entries.Add(entry);
}
public void Validate(Entry entry)
{
if (entry.Size < 0)
throw new ArgumentException("Entry size must be greater than zero");
}
В модульном тесте больше не описывается код проверки.
Что лучше всего сделать в этом случае? Должен ли я просто оставить Validate () для тестирования через AddEntry?
Редактировать: чтобы уточнить, предположим, у меня была причина сделать общедоступный код с рефрактором (немного надуманным в этой ситуации), я хотел бы дублировать тестовый код, чтобы он был тщательным?