晚上好,第一次面对模拟对象,我尝试测试我的应用程序,但没有任何反应。我应该测试ATM的工作。我有 2 个未实现的接口(帐户和卡)和一个类。ATM(有空方法)。我的任务是在类 ATM 中实现方法。但不能改变方法。
所以这是我的代码,无法测试。
1)接口卡:
package myatm;
public interface Card {
public boolean isBlocked(); // checks whther card is blocked or not
public Account getAccount(); // returns the balance connected with this card
public boolean checkPin(int pinCode); // checks the property of password
}
2)接口账户:
package myatm;
public interface Account {
public double getBalance(); // returns current balance
public double withdrow(double amount); // returns the sum which was taken.
}
3)类ATM:
package myatm;
public class ATM {
public double money;
ATM(double moneyInATM){ //we can set up the number of money in ATM
money=moneyInATM;
}
public void setATM (ATM atm){
this.atm =atm;
}
public double getMoneyInATM() { //
return atm.checkBalance();
}
// checks pin code and card status(blocked or not)
// if blocked should send exception
// if pin is not correct should send exception too
public boolean validateCard(Card card, int pinCode){
boolean ret = false;
if ((card.checkPin(pinCode)==false) && (card.isBlocked()==false)){
ret=false;
}
else {
if((card.checkPin(pinCode)==true) && (card.isBlocked()==true))
ret = true;
}
return ret; }
Account acc = null;
//returns the total ammount of money
public double checkBalance(){
return acc.getBalance();
}
ATM atm = new ATM(10500);
// method which is taking money from the account.
//Should check if sum is less then money in atm
public double getCash(double amount){
double sum=amount;
if(atm.checkBalance()>acc.getBalance()){
sum=(acc.getBalance()-sum);
}
else if(atm.checkBalance()<acc.getBalance()){
throw new IllegalArgumentException("Not enough money in ATM");
}
else if (sum>acc.getBalance()){
throw new UnsupportedOperationException("Not enought money on your account");
}
return sum;
}}
4)类MyATM:
package myatm;
public class MyATM {
public static void main(String[] args) {
double moneyInATM = 1000;
ATM atm = new ATM(moneyInATM);
Card card = null;
atm.validateCard(card, 1234);
atm.checkBalance();
atm.getCash(999.99);
}
}
这是我尝试为一种方法编写的测试,但它不起作用。请试着让我知道我做错了什么。
5) 包括 Mockito 的类:
package myatm;
import static java.util.jar.Pack200.Packer.TRUE;
import static org.mockito.Mockito.*;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
public class ATMtest {
ATM atm;
@Before
public void setup(){
Card card =mock(Card.class);
Account acc = mock(Account.class);
when(card.isBlocked()).thenReturn(Boolean.FALSE);
when(card.checkPin(1234)).thenReturn(Boolean.TRUE);
atm.setATM(atm);
atm = new ATM(1500);
}
@Test
public void setBalance (double x){
Assert.assertEquals(x, atm.checkBalance());
}
}