NUnit Quick Start
using System;
using NUnit.Framework;
namespace Bank
{
public class Account
{
private decimal balance;
private decimal minimumBalance = 10m;
public void Deposit(decimal amount)
{
balance += amount;
}
public void Withdraw(decimal amount)
{
balance -= amount;
}
public void TransferFunds(Account destination, decimal amount)
{
if (balance - amount < minimumBalance)
throw new InsufficientFundsException();
destination.Deposit(amount);
Withdraw(amount);
}
public decimal Balance
{
get { return balance; }
}
public decimal MinimumBalance
{
get { return minimumBalance; }
}
}
public class InsufficientFundsException : ApplicationException
{
}
[TestFixture]
public class AccountTest
{
Account source;
Account destination;
[SetUp]
public void Init()
{
source = new Account();
source.Deposit(200m);
destination = new Account();
destination.Deposit(150m);
}
[Test]
public void TransferFunds()
{
source.TransferFunds(destination, 100m);
Assert.AreEqual(250m, destination.Balance);
Assert.AreEqual(100m, source.Balance);
}
[Test]
[ExpectedException(typeof(InsufficientFundsException))]
public void TransferWithInsufficientFunds()
{
source.TransferFunds(destination, 300m);
}
[Test]
[Ignore("Decide how to implement transaction management")]
public void TransferWithInsufficientFundsAtomicity()
{
try
{
source.TransferFunds(destination, 300m);
}
catch (InsufficientFundsException expected)
{
}
Assert.AreEqual(200m, source.Balance);
Assert.AreEqual(150m, destination.Balance);
}
}
}
Listing - QuickStart Example