mocktest
src/junitbook.fine.tasting
Account.java
AccountManager.java
AccountService.java
MockAccountManager.java
testAccountService.java
--Account.java
package junitbook.fine.tasting;
public class Account{
private long balance;
public Account(String accountId,long initialBalance){
this.balance = initialBalance;
System.out.println("-------Account balance initialBalance:-----"+balance);
}
public void debit(long amount){
this.balance -= amount;
System.out.println("-------debit balance-amount:------"+balance);
}
public void credit(long amount){
this.balance +=amount;
System.out.println("-------credit balance+amount:------"+balance);
}
public long getBalance(){
return this.balance;
}
}
-----AccountManager.java
package junitbook.fine.tasting;
public interface AccountManager{
Account findAccountForUser(String userId);
void updateAccount(Account account);
}
-----AccountService.java
package junitbook.fine.tasting;
public class AccountService{
private AccountManager accountManager;
private long amount;
public void setAccountManager(MockAccountManager mockAccountManager, AccountManager manager){
this.accountManager = manager;
}
public void transfer(String senderId,String beneficiaryId,long account){
Account sender = this.accountManager.findAccountForUser(senderId);
Account beneficiary =this.accountManager.findAccountForUser(beneficiaryId);
sender.debit(amount);
beneficiary.credit(amount);
this.accountManager.updateAccount(sender);
this.accountManager.updateAccount(beneficiary);
}
}
----MockAccountManager.java
package junitbook.fine.tasting;
import java.util.Hashtable;
public class MockAccountManager implements AccountManager{
private Hashtable accounts = new Hashtable();
public void addAccount(String userId,Account account){
this.accounts.put(userId,account);
}
public Account findAccountForUser(String userId){
return (Account)this.accounts.get(userId);
}
public void updateAccount(Account account){
}
}
----testAccountService.java
package junitbook.fine.tasting;
import junit.framework.*;
public class testAccountService extends TestCase{
public void testTransferOk(){
MockAccountManager mockAccountManager = new MockAccountManager();
Account senderAccount = new Account("1",200);
System.out.println("-------senderAccount:------"+senderAccount);
Account beneficiaryAccount = new Account("2",100);
System.out.println("-------senderAccount:-----"+beneficiaryAccount);
mockAccountManager.addAccount("1",senderAccount);
mockAccountManager.addAccount("2",beneficiaryAccount);
System.out.println("-------mockAccountManager:------"+mockAccountManager);
AccountService accountService = new AccountService();
System.out.println("-------accountService1:------"+accountService);
accountService.setAccountManager(mockAccountManager, mockAccountManager);
accountService.transfer("1","2",50);
System.out.println("-------accountService2:-------"+accountService);
assertEquals(200,senderAccount.getBalance());
assertEquals(100,beneficiaryAccount.getBalance());
}
}