public class DBManager {
 public String retrieveAccountHolderName(int accountId) {
  String accountHolderName = null;
  // connect to db
  // retrieve the Account Holder Name
  return accountHolderName;
 }
 public static String getConnectionString() {
  return "ORIGINAL";
 }
}
public class Bank {
 DBManager dbManager = new DBManager();
 public String processAccount(int accountID) {
  // Some other code goes here
  String accountHolderName = dbManager
    .retrieveAccountHolderName(accountID);
  // some more processing code
  return accountHolderName;
 }
 public String getConnection() throws Exception {
  return "Connection";
  // some thing here might throw an exception
 }
 public String makeConnection() {
  // some connection related code
  // goes here
  // call to static method
  String conStr = DBManager.getConnectionString();
  // If the connection String
  // is anything other than
  // ORIGINAL return FAIL
  if (conStr.equals("ORIGINAL"))
   return "SUCCESS";
  else
   return "FAIL";
 }
}
import static org.junit.Assert.assertEquals;
import mockit.Expectations;
import mockit.Mocked;
import mockit.NonStrictExpectations;
import org.junit.Test;
public class BankTest {
 @Mocked
 DBManager dbManager; // variables declared here are mocked by default
 @Test
 public void testProcessAccount() {
  Bank bank = new Bank();
  // Define the Expectations block here
  new Expectations() {
   {
    dbManager.retrieveAccountHolderName(10);
    returns("Abhi");
   }
  };
  String name = bank.processAccount(10);
  assertEquals("Account holder Name for A/C id 10 is 'Abhi' ", "Abhi",
    name);
 }
 @Test
 public void testMakeConnection() {
  new NonStrictExpectations() {
   {
    DBManager.getConnectionString();
    returns("DUPLICATE");
   }
  };
  Bank bank = new Bank();
  String status = bank.makeConnection();
  assertEquals("Status is FAIL", "FAIL", status);
 }
 @Test(expected = Exception.class)
 public void testGetConnection() throws Exception {
  final Bank bank = new Bank();
  new Expectations(bank) {
   {
    bank.getConnection();
    result = new Exception();
   }
  };
  bank.getConnection();
 }
}
 
No comments:
Post a Comment