Supposons que j'ai une fonction comme ceci:pratiques pour l'unité de refactoring testé le code
public void AddEntry(Entry entry)
{
if (entry.Size < 0)
throw new ArgumentException("Entry size must be greater than zero");
DB.Entries.Add(entry);
}
Et un test unitaire correspondant:
[TestMethod]
[ExpectedException(typeof(ArgumentException), "Entry size must be greater than zero")]
public void AddEntry_TermSizeLessThanZero_ThrowException()
{
Entry e = new Entry(-5);
AddEntry(e);
}
Et puis je Refactor le code de validation sur:
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");
}
Le test unitaire ne décrit plus le code de validation.
Quelle est la meilleure chose à faire dans ce cas? Est-ce que je quitte simplement Validate() pour être testé via AddEntry? Edit: pour clarifier, en supposant que j'avais une raison de rendre public le code réfracté (un peu artificiel dans cette situation), est-ce que je voudrais dupliquer le code de test pour qu'il soit complet?
Beaucoup de bonnes réponses, mais je suppose qu'il n'y a pas une seule réponse à ce problème. Je n'ai jamais trop pensé à la seconde approche. Merci! –