Ich schreibe einige Komponententests in C# mit Nunit. Betrachten Sie den folgenden Code ein:Ist es eine schlechte Übung, Komponententests in einer Schleife auszuführen?
[Test()]
public void TestCarCost() {
for (int i = 0; i < Examples.exampleCount; i++) {
Car car = new Car(Examples[i]);
Assert.AreEqual (car.getCost(), Examples[i].cost, "Test " + (i + 1) + " failed");
}
}
Lassen Sie uns Beispiele sagen ist eine Klasse mit einigen statischen Daten für die Prüfung verschiedener möglicher Eingang für Fahrzeugtypen, wie man sehen kann ich für irgendwelche Fehler in der car.getCost zu testen, versuche() Funktion. Jetzt fühlt sich das in einer Schleife irgendwie falsch an, da zum Beispiel wenn eine der Behauptungen fehlschlägt, es dich immer zur selben Codezeile schickt. Außerdem, so weit ich weiß, wann immer eine Assert in [Test()] fehlschlägt, beendet nunit sofort den Rest des Testcodes. Was bedeutet, wenn ich alles innerhalb einer Schleife habe und behaupte, dass Nr 1 fehlschlägt, kann ich nicht sehen, ob der andere behauptet, dass es fehlgeschlagen ist. Das explizite Schreiben aller Tests schreibt im Wesentlichen kopierten Code, so dass es sich auch nicht richtig anfühlt. Was würde in dieser Situation als gute Praxis angesehen werden? Ist es in Ordnung, eine Menge ähnlichen Code im Komponententest zu haben? Gibt es eine elegante Lösung, die ich vermisse?
Sie können hier das 'TestCase'-Attribut von NUnit verwenden. Was ist "Beispiel" hier? –