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 / 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 ExpectedException

Bij onze testmethode voegen we een ExpectedException toe:

        [TestMethod]
        [ExpectedException(typeof(DivideByZeroException))]
        public void TestDivideByZero()
        {
            double result = 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.

Last updated