Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ExpectedException in nUnit gave me an error

I'm new to using Testing Tools on the .NET Framework, so I downloaded it from NuGet with help from ReSharper.

I am using this Quick Start to learn how to use nUnit. I had just copied the code and an error came up on this attribute:

[ExpectedException(typeof(InsufficientFundsException))] //it is user defined Exception  

The error is:

The type or namespace name 'ExpectedException' could not be found (are you missing a using directive or an assembly reference?)

Why? And if I need such functionality, what should I replace it with?

like image 853
Basheer AL-MOMANI Avatar asked Nov 24 '15 13:11

Basheer AL-MOMANI


2 Answers

If you're using NUnit 3.0, then your error is because the ExpectedExceptionAttribute has been removed. You should instead use a construct like the Throws Constraint.

For example, the tutorial you linked has this test:

[Test] [ExpectedException(typeof(InsufficientFundsException))] public void TransferWithInsufficientFunds() {     Account source = new Account();     source.Deposit(200m);      Account destination = new Account();     destination.Deposit(150m);      source.TransferFunds(destination, 300m); } 

To change this to work under NUnit 3.0, change it to the following:

[Test] public void TransferWithInsufficientFunds() {     Account source = new Account();     source.Deposit(200m);      Account destination = new Account();     destination.Deposit(150m);      Assert.That(() => source.TransferFunds(destination, 300m),                  Throws.TypeOf<InsufficientFundsException>()); } 
like image 165
Patrick Quirk Avatar answered Sep 25 '22 08:09

Patrick Quirk


Not sure if this changed recently but with NUnit 3.4.0 it provides Assert.Throws<T>.

[Test]  public void TransferWithInsufficientFunds() {     Account source = new Account();     source.Deposit(200m);      Account destination = new Account();     destination.Deposit(150m);      Assert.Throws<InsufficientFundsException>(() => source.TransferFunds(destination, 300m));  } 
like image 22
Nathan Smith Avatar answered Sep 26 '22 08:09

Nathan Smith