Using Try / Catch
There first way of testing for Exceptions is by using the try-catch construct:[TestMethod]
public void TestCard()
{
var c = new CreditCard();
try
{
c.CardNo = "123"; //Should throw an exception
Assert.Fail("InvalidCardNoException wasn't thrown");
}
catch (InvalidCardNoException)
{
Assert.IsTrue(true, "InvalidCardNoException was properly thrown");
}
}
As you can see from the above example, if the exception isn't thrown, Assert.Fail is called which fails the test; and if it is thrown, we succeed the test with Assert.IsTrue.
But Visual Studio 2008 offers a better way on how to deal with exceptions, by using the ExpectedException Attribute.
Using the ExpectedExceptionAttribute Class
Here is the same example, but this time using the ExpectedException Attribute:[TestMethod, ExpectedException(typeof(InvalidCardNoException))]
public void TestCard()
{
var c = new CreditCard();
c.CardNo = "123"; //Should throw an exception
}