¿Es posible utilizar algún tipo de marco de burla con Arquillian, o precisamente cómo burlarse de los EJB inyectados? Sé que, con el uso de CDI (Contexts and Dependency Injection), es posible inyectar alternativas en la prueba. Pero sin CDI como mecanismo de inyección, cuando solo estoy usando inyección EJB, ¿cómo es posible?¿Cómo burlarse de los servicios con Arquillian?
recientemente he probado mis EJB con interfaz de servicio de aplicación simulada de la siguiente manera:
// Service inteface
public interface Audit {
void audit(String info);
}
// Mock implementation
@Stateless
public class MockAuditBean implements Audit {
public static String lastInfo = null;
@Override
public void audit(String info) {
this.lastInfo = info;
}
}
// assert in test
assertTrue(MockAuditBean.lastInfo.contains("dummy"));
Este enfoque es posible, pero requiere una gran cantidad de implementaciones simuladas personalizado. Lo que es peor, las instancias inyectadas de simulacros son proxies y usan la interfaz de servicio. No se pueden convertir para simular clase de implementación para comparar resultados. Solo se pueden usar miembros estáticos y métodos de implementación simulada.
He probado también otras posibilidades para establecer los EJB relacionada manualmente. Este enfoque tiene varios inconvenientes. Requiere que el EJB objetivo de prueba tenga miembros o instaladores no privados para ellos. Cuando el EJB objetivo se basa en la anotación del ciclo de vida de @PostConstruct, debe llamarlo después de la configuración de "inyección" manual. La ventaja de esta solución es la capacidad de utilizar frameworks simulados, como mockito o jMock.
tener a alguien una experiencia para compartir, cómo probar y puesta en marcha de estas pruebas de integración, o incluso el uso de marcos de burla en ella?
¿Podría al menos parafrasear parte del contenido del enlace? Los enlaces por sí solos están sujetos a la "podredumbre del enlace", y tal esfuerzo sería apreciado. – trudyscousin