Innanzitutto, mi scuso per il titolo, non ho potuto pensare al modo più semplice per spiegarlo!
Ho un metodo per cui voglio scrivere test unitari. Lo terrò abbastanza generico perché non voglio discutere l'implementazione del metodo, ma solo il test. Il metodo è:
public void HandleItem(item a)
{
CreateNewItem();
UpdateStatusOnPreviousItem();
SetNextRunDate();
}
Quindi questa classe ha un metodo pubblico che chiama alcuni metodi privati per eseguire la logica.
Quindi quando scrivo il test unitario voglio controllare che siano state fatte tutte e tre le cose. Dato che sono tutti chiamati nello stesso percorso, ho pensato che avrei potuto farlo come un test:
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
}
Ma pensavo di poterlo scrivere anche come tre test separati:
public void GivenItem_WhenRun_ThenItemIsCreated()
{
HandleItem(item);
}
public void GivenItem_WhenRun_ThenStatusIsUpdatedOnPreviousItem()
{
HandleItem(item);
}
public void GivenItem_WhenRun_ThenRunDateIsSet()
{
HandleItem(item);
}
Quindi per me sembra più bello in quanto essenzialmente elenca i requisiti, ma poi tutti e tre sono correlati e richiedono esattamente lo stesso lavoro eseguito sul metodo testato, quindi sto eseguendo lo stesso codice 3 volte.
Esiste un approccio raccomandato da prendere con questo?
Grazie