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