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