{
}
Assert.AreEqual(200.00F,source.Balance);
Assert.AreEqual(150.00F,destination.Balance);
}
我們正測試業務方法的事務屬性-要么都成功,要么都失敗。編譯并運行-紅條。OK,我們已經讓$300.00蒸發了((1999.com déjà vu?)-源帳戶有一個正確余額150.00,但是目標帳戶則是$450.00.我們如何修復?我們僅需要將最小余額檢查調用放在更新的前面即可:
public void TransferFunds(Account destination, float amount)
{
if(balance-amount throw new InsufficientFundsException(); destination.Deposit(amount); Withdraw(amount); } 如果Withdraw()方法拋出另外一個異常怎么辦?我們應該在捕獲代碼段中執行一個追加的業務,或是依賴我們的事務管理器來恢復對象的狀態?關于這點,我們需要回答一些問題,但不是現在。同時,我們應該對失敗的測試最些什么呢?刪除它?一個比較好的方式是暫時忽略它,在測試代碼中加入如下屬性: [Test] [Ignore("Decide how to implement transaction management")] public void TransferWithInsufficientFundsAtomicity() { // code is the same }
文章來源于領測軟件測試網 http://www.kjueaiud.com/