NUnit Quick Start
原文檔:http://www.nunit.org
翻 譯:Young.J
說 明:該實例是最早期的nunit版本中找到,在測試驅動的開發中它并不是一個很好的例子,但它能闡明使用nunit的最基本方法。
現在開始我們的例子。假設我們開始寫一個銀行業的應用程序,我們有一個基類―Account,Account主要負責資金的增加,撤銷和轉帳,下面是該類的代碼
namespace bank

{
public class Account
{
private float balance;
public void Deposit(float amount)
{
balance+=amount;
}
public void Withdraw(float amount)
{
balance-=amount;
}
public void TransferFunds(Account destination, float amount)
{ }
public float Balance
{ 
get
{ return balance;}
}
}
}
namespace bank

{
using NUnit.Framework;
[TestFixture]
public class AccountTest
{
[Test]
public void TransferFunds()
{
Account source = new Account();
source.Deposit(200.00F);
Account destination = new Account();
destination.Deposit(150.00F);
source.TransferFunds(destination, 100.00F);
Assert.AreEqual(250.00F, destination.Balance);
Assert.AreEqual(100.00F, source.Balance);
}
}
}
public void TransferFunds(Account destination, float amount)

{
destination.Deposit(amount);
Withdraw(amount);
}
private float minimumBalance = 10.00F;
public float MinimumBalance

{
get
{ return minimumBalance;}
}
public class InsufficientFundsException : ApplicationException

{
}
[Test]
[ExpectedException(typeof(InsufficientFundsException))]
public void TransferWithInsufficientFunds()

{
Account source = new Account();
source.Deposit(200.00F);
Account destination = new Account();
destination.Deposit(150.00F);
source.TransferFunds(destination, 300.00F);
}
public void TransferFunds(Account destination, float amount)

{
destination.Deposit(amount);
if(balance-amount < minimumBalance)
throw new InsufficientFundsException();
Withdraw(amount);
}
[Test]
public void TransferWithInsufficientFundsAtomicity()

{
Account source = new Account();
source.Deposit(200.00F);
Account destination = new Account();
destination.Deposit(150.00F);
try
{
source.TransferFunds(destination, 300.00F);
}
catch(InsufficientFundsException expected)
{
}
Assert.AreEqual(200.00F,source.Balance);
Assert.AreEqual(150.00F,destination.Balance);
}
[Test]
[Ignore("Decide how to implement transaction management")]
public void TransferWithInsufficientFundsAtomicity()

{
// code is the same
}新聞熱點
疑難解答