【发布时间】:2021-10-27 19:31:00
【问题描述】:
我目前正在执行单元测试任务。
在项目中,我有一个银行帐户类和一个单元测试类。
在 BankAccount 类中,我们有一个变量
private double balance { get; }
使用私有类型的变量并且只获取,例如通过提取现金的类函数完成后如何更新余额。
public double Debit (double amount)
/*Ensuring Debit Amount is Valid and Balance Available for Transaction*/
{
IsAmountVerified(amount);
if (IsAmountVerified(amount) is false) { throw new ArgumentOutOfRangeException("",WRONG_AMOUNT); }
if (balance < amount) { throw new ArgumentOutOfRangeException("",INSUFFICIENT_BALANCE); }
else **balance -= amount**;
/*Return Value*/
return amount;
}
如何更新余额?还要将此变量设为私有,我无法在 UnitTesting 类中访问它。
[TestMethod]
public void DepositTest1()
{
BankAccount Account = new BankAccount(100, "Baldip Singh");
Account.Deposit(1);
Assert.AreEqual(101, Account.balance);
}
感谢您的任何见解,干杯。
【问题讨论】:
-
你不能写入只读属性,傻。您可能可以写入其支持字段,假设它有一个(并非所有属性都这样做......例如,如果余额是其他东西的总和怎么办?)为此,您必须对被测系统进行逆向工程.
-
没错!我得出的结论是,这可能是写作业时的错误-_-
-
如果你想在构造函数之外改变它,你需要将
set;添加到属性中。 -
Within the BankAccount class we have a variable你有一个属性。 -
@Baldeep 的重要说明 -
double完全不适合货币金额;如果您不想与财务人员进行尴尬的对话,请改用decimal
标签: c# visual-studio unit-testing access-modifiers