JUnit + Spring (Services)

Antes estuve haciendo test cases con objetos de acceso a datos (DAOs) en los cuales no se me presentó ningún problema. Sin embargo haciendo uso de servicios o managers (comúnmente así los llaman) el desarrollo es distitnto (si está correctamente configurado para que maneje objetos proxy) puesto que en los servicios es necesario registrar el "scope" por el tema de objetos proxys. Ver IoC Container.

Ejemplo de un test case:




public class TestMotorsillo extends TestCase {

ApplicationContext acontext;
protected final Log log = LogFactory.getLog(getClass());

public TestMotorsillo(String method) {
super(method);
}

protected void setUp() throws Exception {
super.setUp();
XmlWebApplicationContext wac = new XmlWebApplicationContext();
wac.setConfigLocations(new String[] { "classpath:applicationContext-hibernate.xml",
"classpath:applicationContext-resources.xml",
"classpath:applicationContext-service.xml"});

wac.setServletContext(new MockServletContext(""));
MockHttpSession session = new MockHttpSession();
MockHttpServletRequest request = new MockHttpServletRequest();
request.setSession(session);
RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(request));
wac.refresh();
wac.getBeanFactory().registerScope("session", new SessionScope());
wac.registerShutdownHook();
this.acontext = wac;
}

public void testCalculo(){
CalculateManager calculateManager =
(CalculateManager)acontext.getBean("calculateManager");

BigDecimal monto = calculateManager.getMontoTotal("XX");
assertTrue(Constants.MONTO_PROMEDIO_ANUAL > monto.doubleValue());
}
}


Comentarios