my dog learned polymorphism
The moose likes Java in General and the fly likes JUnit Testing Problem Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Java in General
Reply locked New topic

JUnit Testing Problem

kartik sanghavi

Joined: Aug 13, 2010
Posts: 3
I am new to spring!!

I have got the source code of spring recipes book by gary mark.

In an application of bank I am trying to alter the Account class, AccountService interface and the AccountServiceImpl class to allow the setting of a credit limit on accounts and for withdrawals to be allowed up to that credit limit.

Plus I have to Alter the JUnit test in AccountServiceTests to test this new functionality.

How can I do this?

The original files are as under:


public class Account {

private String accountNo;
private double balance;

public Account() {}

public Account(String accountNo, double balance) {
this.accountNo = accountNo;
this.balance = balance;

public String getAccountNo() {
return accountNo;

public double getBalance() {
return balance;

public void setAccountNo(String accountNo) {
this.accountNo = accountNo;

public void setBalance(double balance) {
this.balance = balance;

public boolean equals(Object obj) {
if (!(obj instanceof Account)) {
return false;
Account account = (Account) obj;
return account.accountNo.equals(accountNo) && account.balance == balance;



public interface AccountService {

public void createAccount(String accountNo);
public void removeAccount(String accountNo);
public void deposit(String accountNo, double amount);
public void withdraw(String accountNo, double amount);
public double getBalance(String accountNo);



public class AccountServiceImpl implements AccountService {

private AccountDao accountDao;

public AccountServiceImpl(AccountDao accountDao) {
this.accountDao = accountDao;

public void createAccount(String accountNo) {
accountDao.createAccount(new Account(accountNo, 0));

public void removeAccount(String accountNo) {
Account account = accountDao.findAccount(accountNo);

public void deposit(String accountNo, double amount) {
Account account = accountDao.findAccount(accountNo);
account.setBalance(account.getBalance() + amount);

public void withdraw(String accountNo, double amount) {
Account account = accountDao.findAccount(accountNo);
if (account.getBalance() < amount) {
throw new InsufficientBalanceException();
account.setBalance(account.getBalance() - amount);

public double getBalance(String accountNo) {
return accountDao.findAccount(accountNo).getBalance();



import static org.junit.Assert.*;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class AccountServiceTests {

private static final String TEST_ACCOUNT_NO = "1234";
private AccountService accountService;

public void init() {
accountService = new AccountServiceImpl(new InMemoryAccountDao());
accountService.deposit(TEST_ACCOUNT_NO, 100);

public void deposit() {
accountService.deposit(TEST_ACCOUNT_NO, 50);
assertEquals(accountService.getBalance(TEST_ACCOUNT_NO), 150, 0);

public void withDraw() {
accountService.withdraw(TEST_ACCOUNT_NO, 50);
assertEquals(accountService.getBalance(TEST_ACCOUNT_NO), 50, 0);

public void cleanup() {

Bear Bibeault
Author and ninkuma

Joined: Jan 10, 2002
Posts: 63844

Please do not cross-post the same question in multiple forums. It wastes people's time when multiple redundant conversations take place. Please click this link ⇒ CarefullyChooseOneForum ⇐ for more information.

[Asking smart questions] [About Bear] [Books by Bear]
I agree. Here's the link:
subject: JUnit Testing Problem
It's not a secret anymore!