??????3??????????
???????????????????Debit_WhenAmountIsMoreThanBalance_ShouldThrowArgumentOutOfRange
??????Debit_WhenAmountIsLessThanZero_ShouldThrowArgumentOutOfRange
??????Щ???????????????е????????????????????????????????ExpectedException????????????????
????????????????
??????????????????????
// class under test
public const string DebitAmountExceedsBalanceMessage = "Debit amount exceeds balance";
public const string DebitAmountLessThanZeroMessage = "Debit amount less than zero";
// method under test
// ...
if (amount > m_balance)
{
throw new ArgumentOutOfRangeException("amount"?? amount?? DebitAmountExceedsBalanceMessage);
}
if (amount < 0)
{
throw new ArgumentOutOfRangeException("amount"?? amount?? DebitAmountLessThanZeroMessage);
}
// ...
??????4????????????
????????????ExpectedException???????????????????????????????????????????????????????
??????????Debit_WhenAmountIsMoreThanBalance_ShouldThrowArgumentOutOfRange
??????????
[TestMethod]
public void Debit_WhenAmountIsGreaterThanBalance_ShouldThrowArgumentOutOfRange()
{
// arrange
double beginningBalance = 11.99;
double debitAmount = 20.0;
BankAccount account = new BankAccount("Mr. Bryan Walton"?? beginningBalance);
// act
try
{
account.Debit(debitAmount);
}
catch (ArgumentOutOfRangeException e)
{
// assert
StringAssert.Contains(e.Message?? BankAccount. DebitAmountExceedsBalanceMessage);
}
}
??????5????β?????????д????η???
???????????ò????????????в??????Debit_WhenAmountIsMoreThanBalance_ShouldThrowArgumentOutOfRange
????????????????????Щ????
????1?????????????????balance???debitAmount???У???????????????????????
????2?????????????debitAmount???У????assert ????????????????Debit?????????з????????????????????????????????????????????С?
????3?????debitAmount????Ч?????0???balanceС???????????????????????????????????????????????——??????????????????????ε???????????????????????????????????????????????????????????д??????
?????????????????????????????????м??????Fail???????????????????????????????????????????β?????д???????
??????????????????У????????????????????????????????????????????????????????StringAssert???????return??
???????????Debit_WhenAmountIsMoreThanBalance_ShouldThrowArgumentOutOfRange
???????????£?
[TestMethod]
public void Debit_WhenAmountIsGreaterThanBalance_ShouldThrowArgumentOutOfRange()
{
// arrange
double beginningBalance = 11.99;
double debitAmount = 20.0;
BankAccount account = new BankAccount("Mr. Bryan Walton"?? beginningBalance);
// act
try
{
account.Debit(debitAmount);
}
catch (ArgumentOutOfRangeException e)
{
// assert
StringAssert.Contains(e.Message?? BankAccount. DebitAmountExceedsBalanceMessage);
return;
}
Assert.Fail("No exception was thrown.")
}
???????????ò??????????????????????????????????????У??????????????????????——???????????????