Ga naar hoofdinhoud

Exception testing

Voeg volgende methode toe aan klasse Calculator:

public double Divide(double a, double b)
{
return a / b;
}

Maak volgende testmethode:

[TestMethod]
public void TestDivide()
{
double expectedResult = 20.0 / 4;
double result = calculator.Divide(20, 4);
Assert.AreEqual(expectedResult, result);
}

Voer de test uit.

We willen nu testen wat er gebeurt als de deler 0 is.

Maak hiervoor volgende testmethode:

[TestMethod]
public void TestDivideByZero()
{
double result = calculator.Divide(20, 0);
Assert.AreEqual(0, result);
}

Voer de test uit. Deze geeft:

Voeg code toe aan de methode Divide om een exception te werpen als de deler 0 is:

public double Divide(double a, double b)
{
if (b==0)
{
throw new DivideByZeroException();
}
else
{
return a / b;
}

}

Of een exception correct geworpen wordt, kan je testen op verschillende manieren. Hieronder tonen we er 2:

Gebruik van Assert.Throws

Bij onze testmethode gebruiken weThrows .
We gebruiken () => calculator.Divide(20, 0) om aan te geven dat we bij deze methode aanroep een Exception verwachten.

[TestMethod]
public void TestDivideByZero()
{
Assert.Throws<DivideByZeroException>(() => calculator.Divide(20, 0));
}

Deze test verloopt wel goed!

Om na te gaan of je test wel goed werkt, kan je eerst testen met een deling door 4. Dan krijg je deze melding:

Gebruik van try - catch

Je kan het werpen van een exception ook nog anders testen; namelijk met een try - catch. Maak volgende testmethode:

[TestMethod]
public void TestDivideByZeroWithTryCatch()
{
try
{
double result = calculator.Divide(20, 4);
Assert.Fail("DivideByZeroException werd niet geworpen");
}
catch (DivideByZeroException)
{
//test geslaagd
}
}

Deze zal 'failed" geven:

Verander nu de 4 in 0 en die test zal wel slagen.