У мене є метод, для якого я хочу написати одиничні тести. Я збираюся тримати це досить загальним, оскільки я не хочу обговорювати реалізацію методу, а лише тестування його. Метод:
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 рази.
Чи є рекомендований підхід до цього?
Спасибі