C# Unit Test erstellen, Out parameter?
public static double Add(out double sum, double summandOne,double sumandTwo )
{
sum = summandOne + sumandTwo;
return sum;
}
Aufgabe: Die erstellten Methoden sind vollständig durch Unit Tests abzudecken (100 % Code Coverage)
Hey Leute wie kann ich für diese Methode eine Unit Test erstellen?
Ich habe es versucht aber leider ist es nicht korrekt👇
[TestMethod()]
public void AddTest(out double sum, double sumOne, double sumTwo)
{
sum = sumOne + sumTwo;
program.Add(out sum, sumOne, sumTwo);
Assert.AreEqual(25, 20,5);
}
1 Antwort
Deine Implementation ist auch etwas irritierend.
1) Die zu testende Methode ist statisch. Daher sollte sie auch über den Typnamen aufgerufen werden. Nach gängiger Konvention handelt es sich bei program jedoch um eine Variable, da der Name mit einem Kleinbuchstaben beginnt.
2) Die Variable sum wird in Add hineingereicht und anschließend überschrieben. Die Addition zuvor ist daher redundant, denn der Wert wird doch eh nicht mehr verwendet.
3) Du übergibst fixe Werte an AreEqual. Dabei sollte doch das Ergebnis der Addition mit der Summe der eingegebenen Werte überprüft werden.
So könnte ein Test aussehen:
[Test]
[TestCase(20d, 5d, 25d)]
public void AddTest(double numberOne, double numberTwo, double expected)
{
double sum;
double result = Program.Add(out sum, numberOne, numberTwo);
Assert.AreEqual(expected, sum);
Assert.AreEqual(expected, result);
}
Dies wäre soweit ein Test mit Parametern. Die Testfälle werden mit dem TestCase-Attribut definiert. Für einen guten Test sollten weitere TestCase-Attribute gesetzt werden, die auch Randfälle testen.
Da die Methode sowohl einen Rückgabewert liefert, als auch einen out-Parameter, sollten beide Ergebnisse geprüft werden.