{
}
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 }
文章来源于领测软件测试网 https://www.ltesting.net/