Una cosa che mi dà fastidio mentre scrivo i test unitari del mio codice è se i test dei metodi dovessero includere la convalida del risultato di altri metodi? Certo, metodi pubblici. Vediamo un esempio piuttosto banale:
public int Solve(string forumla)
{
if (forumla.Contains("+"))
{
return SolveAddition(formula);
}
if (forumla.Contains("-"))
{
return SolveSubstraction(formula);
}
throw new ArgumentException();
}
public int SolveAddition(string formula)
{
var strings = formula.Split('+');
if (strings.Length != 2)
{
throw new ArgumentException();
}
int firstFactor = int.Parse(strings[0]);
int secondFactor = int.Parse(strings[0]);
return firstFactor + secondFactor;
}
In questo caso, i test dei metodi Solve
devono solo testare il flusso di controllo o ogni possibile scenario di SolveAddition
? Supponiamo che SolveAddition
e SolveSubstraction
abbiano i loro test.
Utilizzando altre parole, gli scenari di test per Solve
dovrebbero contenere solo:
- 2 + 2
- 2-2
- 2: 2
O anche includere:
- 2 + 2 + 2 + 2
- 2-2-2-2
- patata - criceto
Distinti saluti