Во-первых, извиняюсь за название, я не мог придумать самый простой способ объяснить это!
У меня есть метод, для которого я хочу написать модульные тесты. Я собираюсь оставить его достаточно общим, так как я не хочу обсуждать реализацию метода, только его тестирование. Метод таков:
public void HandleItem(item a)
{
CreateNewItem();
UpdateStatusOnPreviousItem();
SetNextRunDate();
}
Так что у этого класса есть один открытый метод, который затем вызывает некоторые частные методы для выполнения логики.
Поэтому при написании модульного теста я хочу проверить, все ли три вещи были выполнены. Поскольку все они вызываются в одном прогоне, я подумал, что смогу сделать это как один тест:
public void GivenItem_WhenRun_Thenxxxxx
{
HandleItem(item);
// Assert item has been created
// Assert status has been set on the previous item
// Assert run date has been set
}
Но я подумал, что я мог бы написать это как три отдельных теста:
public void GivenItem_WhenRun_ThenItemIsCreated()
{
HandleItem(item);
}
public void GivenItem_WhenRun_ThenStatusIsUpdatedOnPreviousItem()
{
HandleItem(item);
}
public void GivenItem_WhenRun_ThenRunDateIsSet()
{
HandleItem(item);
}
Так что мне это кажется более приятным, так как это, по сути, перечисление требований, но тогда все три взаимосвязаны и требуют точно такой же работы, выполненной на тестируемом методе, поэтому я выполняю один и тот же код 3 раза.
Есть ли рекомендуемый подход с этим?
Благодарность