C# Unit Test erstellen, Out parameter?

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.