NUnit et MbUnit ont un attribut RowTest qui vous permet d'envoyer différents ensembles de paramètres en un seul test.Est-ce une bonne pratique d'utiliser RowTest dans un test unitaire
[RowTest]
[Row(5, 10, 15)]
[Row(3.5, 2.7, 6.2)]
[Row(-5, 6, 1)]
public void AddTest(double firstNumber, double secondNumber, double result)
{
Assert.AreEqual(result, firstNumber + secondNumber);
}
J'avais l'habitude d'être un grand fan de cette fonctionnalité. Je l'ai utilisé partout. Cependant, dernièrement, je ne suis pas sûr que ce soit une très bonne idée d'utiliser RowTest dans Unit Tests. Voici d'autres raisons:
Un test unitaire doit être très simple. S'il y a un bug, vous ne voulez pas passer beaucoup de temps à comprendre ce que votre test teste. Lorsque vous utilisez plusieurs lignes, chaque ligne a un ensemble de paramètres différent et teste quelque chose de différent.
Aussi j'utilise TestDriven.NET, qui me permet d'exécuter mes tests unitaires à partir de mon IDE, Visual Studio. Avec TestDrivent.NET je ne peux pas ordonner d'exécuter une ligne spécifique, il va exécuter toutes les lignes. Par conséquent, lorsque je débogue, je dois commenter toutes les autres lignes et ne laisser que celle avec laquelle je travaille.
Voici un exemple comment écrirait mes tests aujourd'hui:
[Test]
public void Add_with_positive_whole_numbers()
{
Assert.AreEqual(5, 10 + 15);
}
[Test]
public void Add_with_one_decimal_number()
{
Assert.AreEqual(6.2, 3.5 + 2.7);
}
[Test]
public void Add_with_negative_number()
{
Assert.AreEqual(1, -5 + 6);
}
Dire que je l'utilise encore parfois attribut RowTest mais seulement quand je crois que ça ne va pas me ralentir quand je dois travailler plus tard .
Pensez-vous que c'est une bonne idée d'utiliser cette fonctionnalité dans un test unitaire?
Aussi je l'ai mentionné .. il se gélifie bien avec ma paresse inhérente. – Gishu