【问题标题】:Test case for a trans?跨性别的测试用例?
【发布时间】:2020-09-21 16:04:08
【问题描述】:
我在服务类中有传输方法,我想为此方法创建一个测试,以检查传输值是否有效。
我想测试的方法是这样的:
public void transfer(Account destiny, double value) {
Account origin = new Account();
if (value<= origin.getBalance()) {
this.withdraw(value);
destiny.setDeposit(value);
}
}
我现在开始修改测试。感谢理解。
【问题讨论】:
标签:
java
spring
junit
mockito
【解决方案1】:
我首先建议您重构该方法。
您不想在方法中实例化/创建/查找原始帐户,而是希望将其传入。
所以你的新方法签名应该如下所示
public void transfer(Account destiny, Account origin, double value) {
...
}
完成后,您的快乐路径测试用例应如下所示
Account destiny = new Account();
destiny.setBalance(100); // Some way to set balance
Account origin = new Account();
origin.setBalance(75); // Some way to set balance
transfer(destiny,origin,25); //Call your method
assertEquals(origin.getBalance(), 50);
assertEquals(origin.getBalance(), 125);
您也可以在这里测试原始余额小于转账金额的否定情况,因此转账不会发生,两个账户的余额都不会改变。
【解决方案2】:
这个怎么样,看看余额变了
Account origin = new Account();
double originBalance = origin.getBalance();
transfer(destiny, value);
Account current = new Account();
double currentBalance = current.getBalance();
// Balance should have changed
assertNotEquals(originBalance, currentBalance, 1e-15);